Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据从另一个JComboBox中选择的内容将值加载到JComboBox中?_Java_Ms Access_Dependencies_Jcombobox - Fatal编程技术网

Java 如何根据从另一个JComboBox中选择的内容将值加载到JComboBox中?

Java 如何根据从另一个JComboBox中选择的内容将值加载到JComboBox中?,java,ms-access,dependencies,jcombobox,Java,Ms Access,Dependencies,Jcombobox,这是我的密码: JComboBox unity=new JComboBox(); unity.setBounds(430,280,140,25); unity.addItem("Pakistan"); unity.addItem("China"); unity.addItem("America"); unity.addItem("Japan"); unity.addItem("Bangladesh"); unity.addItem("Srilanka"); unity.addItem("Indi

这是我的密码:

JComboBox unity=new JComboBox();
unity.setBounds(430,280,140,25);
unity.addItem("Pakistan");
unity.addItem("China");
unity.addItem("America");
unity.addItem("Japan");
unity.addItem("Bangladesh");
unity.addItem("Srilanka");
unity.addItem("India");
unity.addItem("Turkey");
unity.addItem("UK");
unity.addItem("Afghanistan");
unity.addItem("Iran");
unity.addItem("Iraq");
unity.setEditable(true);
uy.add(unity);

JLabel city=new JLabel("City:");
city.setBounds(350,320,100,25);
city.setForeground(Color.BLACK);
uy.add(city);
JComboBox cety=new JComboBox();
cety.setBounds(430,320,140,25);

cety.addItem("");
uy.add(cety);
unity.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent olala){
    if(unity.getSelectedItem().equals("Pakistan")){
        cety.addItem("Lahore");
        cety.addItem("Islamabad");
        cety.addItem("Karachi");
        cety.addItem("Rawalpindi");
        cety.addItem("Faisalabad");
        cety.addItem("Gujjranwala");
    }
}
});
但是当我运行程序时,if语句块没有做任何事情。 如果我想根据从另一个
JComboBox
中的选择将值加载到
JComboBox
,我应该怎么做

实际上,如果您先选择“中国”,然后再选择“巴基斯坦”,然后单击
cety
组合框的向下箭头,您将看到这些项目

通过添加
println
这样的

        ...
        unity.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent olala) {
// DEBUG
System.out.println("itemStateChanged(): item = " + olala.getItem());
            ...
您会注意到,当您选择其他项目时,会调用
itemStateChanged
。如果启动程序并第一次看到组合框,则它们的状态尚未更改,方法尚未调用,并且
cety
为空。您可以通过添加

        unity.setSelectedIndex(1);
        unity.setSelectedIndex(0);
在代码的末尾。或者,您可以将所有的
unity.addItem
行移动到
addItemListener
之后,这样将第一个项目添加到列表将触发事件

您需要在添加新项目之前清除这些项目,或者在
unity
中选择几个项目将导致
cety
中出现一个长列表。如果列表中需要空字符串,也需要将该语句移到此处

            ...
        public void itemStateChanged(ItemEvent olala){
            cety.removeAllItems();
            cety.addItem("");
            if (unity.getSelectedItem().equals("Pakistan")) {
                cety.addItem("Lahore");
                ...
然后,您可以使用
开关
而不是大量的
if
语句,从事件中获取项而不是
unity
,并去除原始类型:

    JComboBox<String> unity = new JComboBox<>();
    unity.setBounds(430, 280, 140, 25);
    unity.setEditable(true);
    uy.add(unity);

    JLabel city = new JLabel("City:");
    city.setBounds(350, 320, 100, 25);
    city.setForeground(Color.BLACK);
    uy.add(city);

    JComboBox<String> cety = new JComboBox<>();
    cety.setBounds(430, 320, 140, 25);
    uy.add(cety);

    unity.addItemListener(new ItemListener() {
        @Override
        public void itemStateChanged(ItemEvent event) {
            cety.removeAllItems();
            cety.addItem("");
            switch (event.getItem().toString()) {
                case "Pakistan":
                    cety.addItem("Lahore");
                    cety.addItem("Islamabad");
                    cety.addItem("Karachi");
                    cety.addItem("Rawalpindi");
                    cety.addItem("Faisalabad");
                    cety.addItem("Gujjranwala");
                    break;
                case "China":
                    cety.addItem("Beijing");
                    break;
            //  ...
            }
        }
    });
    unity.addItem("Pakistan");
    unity.addItem("China");
    unity.addItem("America");
    unity.addItem("Japan");
    unity.addItem("Bangladesh");
    unity.addItem("Srilanka");
    unity.addItem("India");
    unity.addItem("Turkey");
    unity.addItem("UK");
    unity.addItem("Afghanistan");
    unity.addItem("Iran");
    unity.addItem("Iraq");

// This would be a workaround if you don't want to move the addItems:
//  unity.setSelectedIndex(1);
//  unity.setSelectedIndex(0);
JComboBox unity=newjcombobox();
团结.挫折(430280 140 25);
unity.setEditable(true);
添加(统一);
JLabel city=新JLabel(“城市:”);
城市。挫折(35032010025);
城市。设置前景(颜色。黑色);
uy.add(城市);
JComboBox cety=新的JComboBox();
cety.立根(430、320、140、25);
加上(cety);
unity.addItemListener(新的ItemListener(){
@凌驾
公共无效itemStateChanged(ItemEvent事件){
cety.removeAllItems();
其他补充条款(“”);
开关(event.getItem().toString()){
“巴基斯坦”案:
cety.addItem(“拉合尔”);
cety.addItem(“伊斯兰堡”);
cety.addItem(“卡拉奇”);
cety.addItem(“拉瓦尔品第”);
其他事项(“费萨拉巴德”);
cety.addItem(“Gujjranwala”);
打破
案例“中国”:
cety.addItem(“北京”);
打破
//  ...
}
}
});
unity.addItem(“巴基斯坦”);
unity.addItem(“中国”);
unity.addItem(“美国”);
unity.addItem(“日本”);
unity.addItem(“孟加拉国”);
unity.addItem(“斯里兰卡”);
unity.addItem(“印度”);
unity.addItem(“土耳其”);
unity.addItem(“英国”);
unity.addItem(“阿富汗”);
unity.addItem(“伊朗”);
unity.addItem(“伊拉克”);
//如果您不想移动附加项,这将是一个解决方法:
//统一。设置选定的索引(1);
//统一。设置选定的索引(0);
实际上,如果您先选择“中国”,然后再选择“巴基斯坦”,然后单击
cety
组合框的向下箭头,您将看到这些项目

通过添加
println
这样的

        ...
        unity.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent olala) {
// DEBUG
System.out.println("itemStateChanged(): item = " + olala.getItem());
            ...
您会注意到,当您选择其他项目时,会调用
itemStateChanged
。如果启动程序并第一次看到组合框,则它们的状态尚未更改,方法尚未调用,并且
cety
为空。您可以通过添加

        unity.setSelectedIndex(1);
        unity.setSelectedIndex(0);
在代码的末尾。或者,您可以将所有的
unity.addItem
行移动到
addItemListener
之后,这样将第一个项目添加到列表将触发事件

您需要在添加新项目之前清除这些项目,或者在
unity
中选择几个项目将导致
cety
中出现一个长列表。如果列表中需要空字符串,也需要将该语句移到此处

            ...
        public void itemStateChanged(ItemEvent olala){
            cety.removeAllItems();
            cety.addItem("");
            if (unity.getSelectedItem().equals("Pakistan")) {
                cety.addItem("Lahore");
                ...
然后,您可以使用
开关
而不是大量的
if
语句,从事件中获取项而不是
unity
,并去除原始类型:

    JComboBox<String> unity = new JComboBox<>();
    unity.setBounds(430, 280, 140, 25);
    unity.setEditable(true);
    uy.add(unity);

    JLabel city = new JLabel("City:");
    city.setBounds(350, 320, 100, 25);
    city.setForeground(Color.BLACK);
    uy.add(city);

    JComboBox<String> cety = new JComboBox<>();
    cety.setBounds(430, 320, 140, 25);
    uy.add(cety);

    unity.addItemListener(new ItemListener() {
        @Override
        public void itemStateChanged(ItemEvent event) {
            cety.removeAllItems();
            cety.addItem("");
            switch (event.getItem().toString()) {
                case "Pakistan":
                    cety.addItem("Lahore");
                    cety.addItem("Islamabad");
                    cety.addItem("Karachi");
                    cety.addItem("Rawalpindi");
                    cety.addItem("Faisalabad");
                    cety.addItem("Gujjranwala");
                    break;
                case "China":
                    cety.addItem("Beijing");
                    break;
            //  ...
            }
        }
    });
    unity.addItem("Pakistan");
    unity.addItem("China");
    unity.addItem("America");
    unity.addItem("Japan");
    unity.addItem("Bangladesh");
    unity.addItem("Srilanka");
    unity.addItem("India");
    unity.addItem("Turkey");
    unity.addItem("UK");
    unity.addItem("Afghanistan");
    unity.addItem("Iran");
    unity.addItem("Iraq");

// This would be a workaround if you don't want to move the addItems:
//  unity.setSelectedIndex(1);
//  unity.setSelectedIndex(0);
JComboBox unity=newjcombobox();
团结.挫折(430280 140 25);
unity.setEditable(true);
添加(统一);
JLabel city=新JLabel(“城市:”);
城市。挫折(35032010025);
城市。设置前景(颜色。黑色);
uy.add(城市);
JComboBox cety=新的JComboBox();
cety.立根(430、320、140、25);
加上(cety);
unity.addItemListener(新的ItemListener(){
@凌驾
公共无效itemStateChanged(ItemEvent事件){
cety.removeAllItems();
其他补充条款(“”);
开关(event.getItem().toString()){
“巴基斯坦”案:
cety.addItem(“拉合尔”);
cety.addItem(“伊斯兰堡”);
cety.addItem(“卡拉奇”);
cety.addItem(“拉瓦尔品第”);
其他事项(“费萨拉巴德”);
cety.addItem(“Gujjranwala”);
打破
案例“中国”:
cety.addItem(“北京”);
打破
//  ...
}
}
});
unity.addItem(“巴基斯坦”);
unity.addItem(“中国”);
unity.addItem(“美国”);
unity.addItem(“日本”);
unity.addItem(“孟加拉国”);
unity.addItem(“斯里兰卡”);
unity.addItem(“印度”);
unity.addItem(“土耳其”);
unity.addItem(“英国”);
unity.addItem(“阿富汗”);
unity.addItem(“伊朗”);
unity.addItem(“伊拉克”);
//如果您不想移动附加项,这将是一个解决方法:
//统一。设置选定的索引(1);
//统一。设置选定的索引(0);

删除分号
if(unity.getSelectedItem().equal