次のような外観を持つjcomboboxを作成したいとします。
1)各行はコード番号と項目名でなければなりません。
2)ユーザーがこれらの行の1つを選択すると、コンボボックスのテキストフィールドコンポーネントで項目名ではなくコード番号が表示されます。 (Something like this)
どうすればいいですか?Java jcombobox異なるテキストがドロップダウンにあり、テキストフィールド内の異なるテキスト
ありがとうございます。
次のような外観を持つjcomboboxを作成したいとします。
1)各行はコード番号と項目名でなければなりません。
2)ユーザーがこれらの行の1つを選択すると、コンボボックスのテキストフィールドコンポーネントで項目名ではなくコード番号が表示されます。 (Something like this)
どうすればいいですか?Java jcombobox異なるテキストがドロップダウンにあり、テキストフィールド内の異なるテキスト
ありがとうございます。
二つのステップ使用していることを行うにはそれほど難しいことではありません:あなたのJComboBox
項目は例えばオブジェクトでなければなりません
を:
public class Item {
private String number;
private String name;
// Constructor + Setters and Getters
}
値をレンダリングする方法をカスタマイズ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());
}
});
幸運。
ありがとうございました。私が欲しいものはほとんどありますが、マウスがドロップダウンリストの上を移動すると、項目も変わります。レンダラーは、ドロップダウンではなく、テキストフィールドコンポーネント内の項目のみを変更します。 – giorgosMih
アップデートを参照してください。条件を 'isSelected && list.getSelectedIndex()!= index'に変更しました。私はこれがあなたのニーズに最も近いものだと思います。結局のところ、 'cellHasFocus'引数がより良い表現を持つため、いくつかのforgroundと背景色を設定することができます。 – STaefi
私は更新が表示されませんでした。ありがとう、それは今働いている。 – giorgosMih
答えを参照してください。 – STaefi