16.下拉框
效果:

package com.lvshitech.gui;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.border.Border;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class JListDemo extends JFrame {
private JList jl;
private JTextField valueField;
public JListDemo() {
super("一个简单的JList");
Container container = getContentPane();
String []entries = {"北京", "天津", "上海", "重庆", "武汉"};
jl = new JList(entries); // 创建JList对象,需要数组
jl.setVisibleRowCount(4); // 设置JList显示的行数
Font displayFont = new Font("Serif", Font.BOLD, 18);
jl.setFont(displayFont);
jl.addListSelectionListener(new ValueReporter()); // 下拉框触发事件监听
// 下拉框面板
JPanel listPanel = new JPanel();
listPanel.setBackground(Color.white);
Border listPanelBorder = BorderFactory.createTitledBorder("JList数据");
listPanel.setBorder(listPanelBorder);
JScrollPane listPane = new JScrollPane(jl);
listPanel.add(listPane);
// 已选择的面板
JPanel valuePanel = new JPanel();
valuePanel.setBackground(Color.white);
Border valuePanelBorder = BorderFactory.createTitledBorder("JList选择");
valuePanel.setBorder(valuePanelBorder);
// 已选择的标签和文本框
JLabel valueLabel = new JLabel("已选择:");
valueField = new JTextField("", 6);
valueField.setFont(displayFont);
valuePanel.add(valueLabel);
valuePanel.add(valueField);
valuePanel.setBackground(Color.white);
valueLabel.setFont(displayFont);
// 添加到容器
container.add(listPanel, BorderLayout.CENTER);
container.add(valuePanel, BorderLayout.SOUTH);
// 样式设置
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String[] args) {
new JListDemo();
}
// 下拉框事件监听接口实现
private class ValueReporter implements ListSelectionListener {
@Override
public void valueChanged(ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) { // 当下拉框中的内容改变时触发
valueField.setText(jl.getSelectedValue().toString());
}
}
}
}

浙公网安备 33010602011771号