Swing中如何实现二级联动下拉列表
Swing中如何实现二级联动下拉列表
简言之,比如说第一个框里有广东,江苏,安徽各省,第二个下拉框里有广东省的各个城市,比如广州,深圳之类的
见代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;public class MyFrame extends JFrame {// 声明下来列表JComboBoxprivate JComboBox choice1;private JComboBox choice2;//定义一个数组private static String[] s1 = {"中国","美国","日本","澳大利亚","法国","德国","英国"};private static String[][] s2 = {{"北京","上海","广州","深圳"},{"华盛顿","纽约","芝加哥","旧金山"},{"东京","大阪","名古屋","北海道"},{"悉尼","堪培拉","珀斯"},{"巴黎","南特","德勒","鲁昂"},{"柏林","华沙","卢布林","波兹南"},{"伦敦","曼切斯特","诺丁汉","牛津"}};public MyFrame(String title){super(title);// 设置布局管理getContentPane().setLayout(new GridLayout(2,2,0,0));// 创建标签JLabel label1 = new JLabel("选择你喜欢的国家:");label1.setHorizontalAlignment(SwingConstants.RIGHT);getContentPane().add(label1);// 实例化JComboBox对象choice1 = new JComboBox(s1);// 为组合框的选择动作注册监听事件,当此组合框的选择有变化时,另一个组合框自动更新内容choice1.addActionListener(e -> {choice2.removeAllItems();JComboBox cb = (JComboBox) e.getSource();
// 获得选择项目String itemString = (String) cb.getSelectedItem();System.out.println(itemString);int index = choice1.getSelectedIndex();for(int i=0; i<s2[index].length; i++) {choice2.addItem(s2[index][i]);}});getContentPane().add(choice1);// 创建标签JLabel label2 = new JLabel("选择城市:");label2.setHorizontalAlignment(SwingConstants.RIGHT);getContentPane().add(label2);// 实例化JComboBox对象choice2 = new JComboBox(s2[0]);// 注册Action事件监听,采用Lambda表达式choice2.addItemListener(e -> {
// 获得选择项目if (e.getStateChange() == ItemEvent.SELECTED){
// 获得选择项目String itemString = (String) e.getItem();System.out.println(itemString);}});getContentPane().add(choice2);// 设置窗口大小setSize(400,150);
// 设置窗口可见setVisible(true);}}
调用代码:
public class HelloWorld {public static void main(String[] args) {MyFrame myFrame = new MyFrame("下拉列表");}
}
运行结果:
以上内容仅供参考学习,如有侵权请联系我删除!
如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。
您的鼓励就是博主最大的动力!