首先是实现的样子
接着附上源代码
String[] province= {"请选择","广东","广西"};
String[][] city= {
{""},
{"请选择","广州","深圳"},
{"请选择","桂林","梧州"}
};
JComboBox comboBox = new JComboBox(province);
comboBox.setBounds(232, 80, 88, 23);
contentPane.add(comboBox);
JComboBox comboBox_1 = new JComboBox();
comboBox_1.setBounds(544, 82, 93, 23);
contentPane.add(comboBox_1);
comboBox.addActionListener(e-> {
comboBox_1.removeAllItems(); //对城市按钮清零
int index=comboBox.getSelectedIndex(); //得到对省份按钮选择的索引 监听器e的作用知道你选的是哪个
for(int i=0;i<city[index].length;i++)
{
comboBox_1.addItem(city[index][i]);
}
});
我只讲大概思路:
1.设置一个String类型的一维数组,用来保存相关省份
2.设置一个String类型的二维m行n列数组,用来保存相关的市区,至于为什么要用二维数组就是为了是实现联动,使它的第m行对应一开始一维数组中第m个省份
例如:city[1][1]广州 对应province[1]广东
city[1][2]深圳 对应province[1]广东
3.按钮设置时,第一个按钮我将province给传进去了,这就代表着左边省份选择按钮有直接的下拉菜单,而右边我没有传任何东西进去,也就自然是空白
4.核心!!!
为左边按钮增加了一个行为监听器 相关具体用法自己搜索
首先将右边按钮清空
然后得到左边按钮是选择第几位,其实就是看看你接下来选一维数组中的第几位,数组从0 开始的
这也就是为什么之前的一维数组和二维数组要对应写
for循环添加右边要显示的内容 通过.length来得到要添加的个数
核心代码是下面的监听器实现联动 相关的注释我写在后面了
至于JComboBox来说的话 这是Design使用图形相关设计自己产生的,不是手动打上去的
comboBox.addActionListener(e-> {
comboBox_1.removeAllItems(); //对城市按钮清零
int index=comboBox.getSelectedIndex(); //得到对省份按钮选择的索引 监听器e的作用知道你选的是哪个
for(int i=0;i<city[index].length;i++)
{
comboBox_1.addItem(city[index][i]);
}
});