当前位置: 首页 > 面试题库 >

Java-如果在combox1中选择了一个值,则应在所有其他组合框中将其禁用

范建华
2023-03-14
问题内容

您好,我仍然是Java的新手,希望学习这个不错的功能…您好,我有4个组合框,里面和里面的相同

-Select-
Item 1
Item 2
Item 3
Item 4

当我选择Item 1comboBox1comboBox2,comboBox3 and comboBox4只有这些元素

-Select-
Item 2
Item 3
Item 4

然后当我选择Item 3on时comboBox2comboBox3 and comboBox4有这个剩余元素

-Select-
Item 2
Item 4

有人知道如何在Java上执行此操作吗?我在Netbeans上使用GUI Builder …

编辑1

这是我的代码

private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {
    jComboBox2.removeItem(jComboBox1.getSelectedItem());
    jComboBox3.removeItem(jComboBox1.getSelectedItem());
    jComboBox4.removeItem(jComboBox1.getSelectedItem());
}

我添加相同的代码jComboBox2, jComboBox3 and jComboBox4之后......当我去选择-Select--Select-是没了......和

还有一个问题是,当我已经全部选择并打算再次更改时…所有项目都消失了,不再有其他选择了。.我只想再次备份可用项目…

编辑2

jComboBox1
-Select-
Item 1
Item 2 <-- I select Item2, then the other combo box will remove Item 2**
Item 3
Item 4

jComboBox2
-Select-
Item 1
Item 3 <-- then I select Item 3
Item 4

jComboBox3
-Select-
Item 1
Item 4 <-- then Item 4

jComboBox4
-Select-
Item 1

但我改变了我的脑海里......然后我需要回去 jComboBox2选择Item3 ,所以我选择
jComboBox2和选择-Select-,这样我就可以选择item3jComboBox4

但结果是jComboBox4为空(无项目)


问题答案:

不知道您的两个答案中的哪个将被删除,但是这里又是相同的答案。请注意,您可以使用循环创建所有JComboBoxes和选项,以防止真正冗长的重复代码。然后,您可以使用getSource()方法来判断事件来自哪个组合框。如果将JComboBoxes创建为数组,则可以非常清晰地循环遍历它们。为了重新添加内容,我只需要跟踪已选择的内容以及使用String数组的组合框。然后,您可以检查此数组,并根据需要使用它来添加项目。请注意,它们不会以相同的顺序返回。如果您想要该功能,则可以使用insertItemAt,但这可能会有些混乱(因为自从添加和删除项以来索引一直在变化),因此我将其省略。

//Declare and initialize the options that the comboboxes will have
String[] options = {"-Select-", "Item 1", "Item 2", "Item 3", "Item 4"};
//Declare and initialize an array that will hold the currently selected options in each combobox by index
//For example the currently selected value of comboBoxes[1] is selected[1]
String[] selected = {"-Select-", "-Select-", "-Select-", "-Select-"};

//Declare and initialize an array of comboBoxes. 
//Four comboboxes will be created all containing the options array
JComboBox[] comboBoxes = new JComboBox[4];
for(int i = 0; i < comboBox.length; i++) {
    comboBoxes[i] = new JComboBox(options);
}

private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {
    //Loop through all of the comboboxes in comboBoxes
    for(int i = 0; i < comboBoxes.length; i++) {
        //Check to see if the current combobox in the array matches the source of your event
        if(evt.getSource() == comboBoxes[i]) {
            //Get the string value of the combobox that fired the event
            String currentSelection = (String)comboBoxes[i].getSelectedItem();
            //Make sure that the value actually changed
            if(!currentSelection.equals(selected[i]) {
                //If the previous value of the combobox was "-Select-" don't add it to all the other comboboxes
                if(!selected[i].equals(options[0])) {
                    //Add back the previous value to all comboboxes other than the one that fired the event
                    for(int j = 0; j < comboBoxes.length; j++) {
                        if(j != i) {
                            comboBoxes[j].addItem(selected[i]);
                        }
                    }
                }
                //If current value of the combobox is "-Select-" don't remove it from all other comboboxes
                if(!currentSelection.equals(options[0]) {
                    //Remove the current value from all comboboxes other than the one that fired the event
                    for(int j = 0; j < comboBoxes.length; j++) {
                        if(j != i) {
                            comboBoxes[j].removeItem(comboBoxes[i].getSelectedItem());
                        }
                    }
                }
            }
            //Set the selected item for the combobox that fired the event to the current value
            selected[i] = currentSelection;
        }
    }
}


 类似资料:
  • 我有一组单选按钮,如果选中“no”,它会显示一个包含6个复选框(不同的名称/ID)的DIV。如果选中“none”,我需要禁用其他复选框(如果不选中“none”,则再次启用)。我还需要标签将类添加到禁用的复选框中,就像我在下面的“添加到笔记本电脑的代码”复选框中所做的那样。 下面是我的演示: null null 我怎样才能把这个和我在这里面的其他脚本结合起来呢?

  • 选中“第一键”复选框时,我想选中并禁用“第二键”复选框 html代码 为复选框键入脚本代码 } 通过使用此代码,key 2复选框被选中并禁用。但是key 2复选框的布尔值仍然是假的。当我单击key 1复选框时,关于如何将key 2复选框的布尔值更改为true的任何建议我正在使用Angular 8及其反应式形式模块。我是角度新手。

  • 我想知道如何检索Firestore收藏中的所有其他文档。我有一个包含日期字段的文档集合。我想按日期对它们进行排序,然后从排序后的集合中的每个X大小的块中检索1个文档。我大约每10秒钟就添加一个新文档,并试图在前端显示历史数据,而不必下载这么多记录。

  • 问题内容: 我有很多表具有相同的列“ customer_number”。我可以通过查询获取所有这些表的列表: 问题是如何从所有这些表中获取具有特定客户编号的所有记录,而不对每个表运行相同的查询。 问题答案: 我假设您要自动执行此操作。两种方法。 SQL生成SQL脚本 。 PLSQL 使用动态sql的类似想法:

  • 我有两个问题: 从表1中选择*,其中my\u值介于值1和值2之间 从表2中选择值1、值2 表2中的value1和value2的集合是唯一的。如何在第一个查询的where语句中插入查询2的所有结果集?

  • 我的HTML代码有一个div标记,其角色为combobox,即。 我试图通过selenium驱动程序和java从组合框中选择一个项目。 我尝试使用"选择"类推荐在这里:如何选择一个下拉值在Selenium WebDriver使用Java 但既然是div,我就错了 msgstr"未预料到的TagNameException:元素应该被选择,但被div" 我认为这是因为div role=“combobo