1

私の目標は、ユーザーが6つのフィールドに配列内の項目を手動で入力できるようにすることであるため、プロジェクトに問題があります。同じアイテムで6つのesを考えJComboBoxましたが、1つのボックスでアイテムを選択すると、残りのボックスでは無効になります。私は始めています、そして私は検索しましたが、私はそのコンストラクターの中でそれをする方法を見つけただけです。

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れる内部クラス内で呼び出されるために使用されます。で選択したアイテムのを取得します。c2の場所にあるアイテムを削除します。と両方に類似したアイテムが含まれているため、アイテムの位置は同じです。ある時点でアイテムをc2に再挿入する場合は、削除するアイテムのインデックスの場所と、を使用して削除するアイテムの名前を保存します。ActionListenerindex=c1.getSelectedIndex();index locationc1c2.removeItemAt(index);indexc1c2index

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

次に、を使用してアイテムを復元します

c2.insertItemAt(item,index);

-外部で使用する場合は、外部で宣言する必要が indexあります。itemActionListener

于 2013-03-30T19:26:23.463 に答える
0

ComboItemを有効にしてみてください。関数setEnabledは、オブジェクト(この場合はcb2)に使用されます。

于 2013-03-27T12:38:32.357 に答える