java combox_Java-如果在combox1中选择了一个值,则应在所...

您好,我还是Java的新手,希望学习这个不错的功能…

您好,我有4个组合框,里面和里面的相同

-Select-

Item 1

Item 2

Item 3

Item 4

当我在comboBox1上选择项目1时,

?comboBox2,comboBox3和comboBox4仅具有这些元素

-Select-

Item 2

Item 3

Item 4

然后当我在comboBox2上选择第3项时,comboBox3和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和jComboBox4 …

当我选择-选择-时-选择-也消失了…

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

编辑2

jComboBox1

-Select-

Item 1

Item 2

Item 3

Item 4

jComboBox2

-Select-

Item 1

Item 3

Item 4

jComboBox3

-Select-

Item 1

Item 4

jComboBox4

-Select-

Item 1

但是我改变主意了…然后我需要回到jComboBox2以选择Item3

所以我选择

jComboBox2并选择-Select-,因此我可以在jComboBox4上选择item3

但结果是

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;

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值