java中如何实现下拉列表的三级联动
时间: 2023-06-18 09:02:15 浏览: 141
Java中可以通过Swing框架中的JComboBox和JList组件来实现下拉列表的三级联动。
1. 创建三个JComboBox对象表示三级联动的三个下拉列表框。
2. 为第一个JComboBox添加选项,该选项为第一级选项,选项的监听器为更新第二个JComboBox的选项。
3. 为第二个JComboBox添加选项,该选项为第二级选项,选项的监听器为更新第三个JComboBox的选项。
4. 为第三个JComboBox添加选项,该选项为第三级选项。
5. 在选项监听器中读取所选的三级选项,进行相应的操作。
下面是一个示例代码,实现了省市县三级联动:
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ThreeLevelLinkageDemo extends JFrame {
private JComboBox<String> provinceComboBox;
private JComboBox<String> cityComboBox;
private JComboBox<String> districtComboBox;
private String[][] cityData = {
{"北京市"},
{"上海市"},
{"广东省", "深圳市", "广州市", "珠海市"},
{"江苏省", "南京市", "苏州市", "无锡市"}
};
private String[][][] districtData = {
{
{"东城区", "西城区", "朝阳区", "海淀区"},
},
{
{"黄浦区", "徐汇区", "长宁区", "静安区"},
},
{
{"福田区", "罗湖区", "南山区", "宝安区"},
{"越秀区", "天河区", "海珠区", "番禺区"},
{"香洲区", "金湾区", "斗门区"},
},
{
{"玄武区", "白下区", "秦淮区", "建邺区"},
{"沧浪区", "平江区", "金阊区", "虎丘区"},
{"崇安区", "北塘区", "南长区", "惠山区"},
}
};
public ThreeLevelLinkageDemo() {
super("三级联动下拉列表");
provinceComboBox = new JComboBox<>(new String[]{"北京市", "上海市", "广东省", "江苏省"});
cityComboBox = new JComboBox<>();
districtComboBox = new JComboBox<>();
provinceComboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int selectedIndex = provinceComboBox.getSelectedIndex();
if (selectedIndex >= 0) {
String[] cities = cityData[selectedIndex];
cityComboBox.setModel(new DefaultComboBoxModel<>(cities));
}
}
});
cityComboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int provinceIndex = provinceComboBox.getSelectedIndex();
int cityIndex = cityComboBox.getSelectedIndex();
if (provinceIndex >= 0 && cityIndex >= 0) {
String[] districts = districtData[provinceIndex][cityIndex];
districtComboBox.setModel(new DefaultComboBoxModel<>(districts));
}
}
});
districtComboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int provinceIndex = provinceComboBox.getSelectedIndex();
int cityIndex = cityComboBox.getSelectedIndex();
int districtIndex = districtComboBox.getSelectedIndex();
if (provinceIndex >= 0 && cityIndex >= 0 && districtIndex >= 0) {
String district = districtData[provinceIndex][cityIndex][districtIndex];
JOptionPane.showMessageDialog(ThreeLevelLinkageDemo.this, "您选择的区域是:" + district);
}
}
});
JPanel panel = new JPanel(new GridLayout(3, 1));
panel.add(provinceComboBox);
panel.add(cityComboBox);
panel.add(districtComboBox);
setContentPane(panel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
new ThreeLevelLinkageDemo().setVisible(true);
}
}
```
运行该程序,即可看到三级联动的下拉列表。