1

我的项目有问题,因为我的目标是让用户用数组中的项目手动填充 6 个字段;我想到了 6 个JComboBox具有相同项目的 es,当您在一个框中选择一个项目时,它在其余部分中被禁用。我开始了,虽然我已经搜索过,但我只找到了在其构造函数中执行此操作的方法。

cb1.addActionListener(new ActionListener(){ 

@Override
public void actionPerformed(ActionEvent e) {
     if(cb1.getSelectedIndex()==1) {
         // this is as far as I go, but disables the entire jcombobox
         cb2.setEnabled(false);

         // this is more like I want, but it doesn't work.
         cb2.setSelectedIndex(1).setEnabled(false);                            
 }}});

如果有人知道一种更有效的方法可以让用户手动将数组项分配给许多字段,我会欢迎它。

4

2 回答 2

1

您无法禁用JComboBox. 您可以将其从该位置删除,方法如下:-

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
public class Combobox extends JFrame{
Combobox(){
    this.setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    String[] list={"car","bus","bike"};
    final JComboBox c1=new JComboBox(list);
    final JComboBox c2=new JComboBox(list);
    Container c=this.getContentPane();
    c.setLayout(new FlowLayout());
    c.add(c1);
    c.add(c2);
    c1.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e) {
            int index=c1.getSelectedIndex();
            c2.removeItemAt(index);
            }
    });
    this.pack();
}
    public static void main(String[] args) {
        new Combobox();
    }
}

final JComboBox c1=new JComboBox(list);将使一个JComboBox拥有的物品list。之所以使用 c1 ,是因为在用于单击事件的final内部类内部调用了 c1。将获得所选项目的. 将删除位于c2 位置的项目。因为和都包含相似的项目,所以项目的位置是相同的。如果您想在某个时候在 c2 中重新插入项目,则保存要删除的项目的索引位置和要删除的项目的名称,使用ActionListenerindex=c1.getSelectedIndex();index locationc1c2.removeItemAt(index);indexc1c2index

index=c1.getSelectedIndex();
item=c2.getItemAtIndex(index);
c2.removeItemAt(index);

然后使用恢复项目

c2.insertItemAt(item,index);

注意-如果要在外面使用indexitem应该在外面声明 ActionListener

于 2013-03-30T19:26:23.463 回答
0

尝试启用 ComboItem。函数 setEnabled 用于对象,在您的情况下为 cb2。

于 2013-03-27T12:38:32.357 回答