1

私はJComboBoxそのレンダラーがコンボリストの各アイテムに対してでJLabelあるということを持っています:Icon

class ComboBoxRenderer extends JLabel implements ListCellRenderer {
    public Component getListCellRendererComponent(
                JList list,
                Object comboItemObject,
                int comboItemIndex,
                boolean isSelected,
                boolean cellHasFocus) {
        String comboItemTitle = (String)comboItemObject;
        setText( comboItemTitle );
        setIcon( new ImageIcon( getClass().getResource( "/images/myIcon.png" ) ) );

        return this;
    }
}

コンボボックスからアイテムを選択するとき、アイテムアイコンではなく、選択したアイテムのテキストをコンボボックスに表示したいだけです。私がそれをすることができる方法はありますか?

4

3 に答える 3

4

レンダリングコードでは、インデックスを確認できます。何かのようなもの:

if (index == -1)
{
    setText(...);
}
else
{
    setText(...);
    setIcon(...);
}

また、コードは頻繁に呼び出されるため、レンダリングコードで画像を読み取らないでください。

于 2011-07-18T14:02:03.417 に答える
1

isSelected次に、をオーバーライドする必要がありextends JLabel、defalultによるレンダラーがJLabelコンポーネントとして返されるため、役に立ちません。

于 2011-07-18T13:58:59.610 に答える
0

ワンライナーコードでテキストを取得するためにcombobox;必要なのはすべてです。

私が私のと呼んだように、変数を作成しますCombotext

次に、SelectedItemからを取得しJComboBoxます。

 ComboText = jComboBox.getSelectedItem(); 
于 2011-09-17T08:09:03.627 に答える