Java windowbuilder组合框操作执行问题
我正在研究一个简单的医院预约系统。我的组合框相互依赖。Java windowbuilder组合框操作执行问题,java,swing,combobox,actionlistener,Java,Swing,Combobox,Actionlistener,我正在研究一个简单的医院预约系统。我的组合框相互依赖。 问题是,当我单击城市组合框并选择一个城市时,它也会进入county actionListener。为什么? private void initialize() { City cities = new City(); Hospital hospitals = new Hospital(); frame = new JFrame(); frame.setBounds(100, 100, 450, 300); frame.setDefaul
问题是,当我单击城市组合框并选择一个城市时,它也会进入county actionListener。为什么?
private void initialize() {
City cities = new City();
Hospital hospitals = new Hospital();
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JLabel lblCity = new JLabel("City");
lblCity.setBounds(25, 25, 25, 14);
frame.getContentPane().add(lblCity);
JComboBox<String> cityBox = new JComboBox<String>(); // CITY
JComboBox<String> hospitalBox = new JComboBox();
hospitalBox.setBounds(99, 141, 265, 22);
frame.getContentPane().add(hospitalBox);
JComboBox<String> comboClinic = new JComboBox<String>(); // CLINIC
comboClinic.setEditable(true);
comboClinic.setBounds(99, 101, 265, 22);
frame.getContentPane().add(comboClinic); // CLINIC
JComboBox<String> countyBox = new JComboBox<String>(); // COUNTY
countyBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// do something
});
countyBox.setEditable(true);
countyBox.setBounds(99, 61, 265, 22);
frame.getContentPane().add(countyBox); // COUNTY
cityBox.setEditable(true); // CITY
cityBox.addItem("Istanbul");
cityBox.addItem("Ankara");
cityBox.addItem("Izmir");
cityBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (cityBox.getSelectedItem().equals("Istanbul")) {
countyBox.removeAllItems(); hospitalBox.removeAllItems();
String istanbul[] = cities.getIstanbul();
countyBox.setSelectedItem("Select county");
for (int i = 0; i < istanbul.length; i++) countyBox.addItem(istanbul[i]);
comboClinic.setSelectedItem("Select clinic");
}
else if(cityBox.getSelectedItem().equals("Ankara")) {
countyBox.removeAllItems(); hospitalBox.removeAllItems();
String ankara[] = cities.getAnkara();
countyBox.setSelectedItem("Select county");
for (int i = 0; i < ankara.length; i++) countyBox.addItem(ankara[i]);
comboClinic.setSelectedItem("Select clinic");
}
else if(cityBox.getSelectedItem().equals("Izmir")) {
countyBox.removeAllItems(); hospitalBox.removeAllItems();
String izmir[] = cities.getIzmir();
countyBox.setSelectedItem("Select county");
for (int i = 0; i < izmir.length; i++) countyBox.addItem(izmir[i]);
comboClinic.setSelectedItem("Select clinic");
}
}
});
cityBox.setSelectedItem("Select City");
cityBox.setBounds(99, 21, 265, 22);
frame.getContentPane().add(cityBox); // CITY
private void initialize(){
城市=新城();
医院=新医院();
frame=新的JFrame();
机架立根(100450300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JLabel lblCity=新JLabel(“城市”);
lblCity.立根(25,25,25,14);
frame.getContentPane().add(lblCity);
JComboBox cityBox=新JComboBox();//城市
JComboBox hospitalBox=新JComboBox();
医院信箱(9914126522);
frame.getContentPane().add(hospitalBox);
JComboBox comboClinic=新建JComboBox();//诊所
comboClinic.setEditable(true);
挫折(9910126522);
frame.getContentPane().add(comboClinic);//CLINIC
JComboBox countyBox=新的JComboBox();//县
addActionListener(新ActionListener()){
已执行的公共无效操作(操作事件e){
//做点什么
});
countyBox.setEditable(真);
退步数(99,61,265,22);
frame.getContentPane().add(countyBox);//COUNTY
cityBox.setEditable(true);//城市
城市邮箱地址(“伊斯坦布尔”);
城市邮箱地址(“安卡拉”);
城市邮箱地址(“伊兹密尔”);
addActionListener(新的ActionListener(){
已执行的公共无效操作(操作事件e){
if(cityBox.getSelectedItem().equals(“伊斯坦布尔”)){
countyBox.removeAllItems();hospitalBox.removeAllItems();
字符串istanbul[]=cities.getIstanbul();
countyBox.setSelectedItem(“选择县”);
对于(int i=0;i<伊斯坦布尔长度;i++)countyBox.addItem(伊斯坦布尔[i]);
comboClinic.setSelectedItem(“选择诊所”);
}
else if(cityBox.getSelectedItem().equals(“Ankara”)){
countyBox.removeAllItems();hospitalBox.removeAllItems();
字符串ankara[]=cities.getAnkara();
countyBox.setSelectedItem(“选择县”);
对于(int i=0;i
正如您在这里看到的,当我选择一个城市时,它会安排城市和县,但它也会进入县actionListener,在事件处理块中,您可以进行以下调用:
countyBox.setSelectedItem("Select county");
根据JComboBox上的javadoc
当调用此方法时,添加到组合框的ActionListeners将收到ActionEvent通知
因此,您添加到
countyBox
中的ActionListener
正在响应。请显示您的代码,以便我们可以看到您在做什么来回答您。@TimHunter您好,我添加了我的代码。正如您在那里看到的,当我选择一个城市时,它会安排城市和县,但它也会进入县ActionListener。Require红色..保持标记的焦点(没有看到任何与javafx相关的内容,只有swing)@kleopatra抱歉,你能帮我解决这个问题吗?非常感谢!你不知道我现在有多高兴!当我删除setSelectedItem行时,它起了作用!