2016-05-09 7 views
4

次のような外観を持つjcomboboxを作成したいとします。
1)各行はコード番号と項目名でなければなりません。
2)ユーザーがこれらの行の1つを選択すると、コンボボックスのテキストフィールドコンポーネントで項目名ではなくコード番号が表示されます。 (Something like this)
どうすればいいですか?Java jcombobox異なるテキストがドロップダウンにあり、テキストフィールド内の異なるテキスト

ありがとうございます。

+0

答えを参照してください。 – STaefi

答えて

1

二つのステップ使用していることを行うにはそれほど難しいことではありません:あなたのJComboBox項目は例えばオブジェクトでなければなりません

  1. を:

    public class Item { 
        private String number; 
        private String name; 
        // Constructor + Setters and Getters 
    } 
    
  2. 値をレンダリングする方法をカスタマイズListCellRendererポップアップリストまたはテキストフィールドにJComboBox

    JComboBox<Item> jc = new JComboBox<Item>(); 
        jc.setRenderer(new ListCellRenderer<Item>() { 
         @Override 
         public Component getListCellRendererComponent(
           JList<? extends Item> list, Item value, int index, boolean isSelected, boolean cellHasFocus) { 
          if(isSelected && list.getSelectedIndex() != index) 
           return new JLabel(value.getNumber()); 
    
          return new JLabel(value.getNumber() +" "+value.getName()); 
         } 
        }); 
    

幸運。

+0

ありがとうございました。私が欲しいものはほとんどありますが、マウスがドロップダウンリストの上を移動すると、項目も変わります。レンダラーは、ドロップダウンではなく、テキストフィールドコンポーネント内の項目のみを変更します。 – giorgosMih

+0

アップデートを参照してください。条件を 'isSelected && list.getSelectedIndex()!= index'に変更しました。私はこれがあなたのニーズに最も近いものだと思います。結局のところ、 'cellHasFocus'引数がより良い表現を持つため、いくつかのforgroundと背景色を設定することができます。 – STaefi

+0

私は更新が表示されませんでした。ありがとう、それは今働いている。 – giorgosMih

関連する問題