仅显示JComboBox选择的项目文本而没有图标?

时间:2011-07-18 13:54:47

标签: java swing icons jcombobox renderer

我有一个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;
    }
}

当我从comboBox中选择一个项目时,我只想在comboBox中显示所选项目文本,而不是项目图标。 我有办法吗?

3 个答案:

答案 0 :(得分:3)

在渲染代码中,您可以检查索引。类似的东西:

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

此外,您不应该在渲染代码中读取图像,因为代码经常被调用。

答案 1 :(得分:1)

然后你必须覆盖isSelectedextends JLabel没用,因为渲染器默认返回JLabel作为组件

答案 2 :(得分:0)

要获取combobox;中的文字,您只需要一个代码。

创建一个变量,我称之为Combotext

然后从SelectedItem获取JComboBox

 ComboText = jComboBox.getSelectedItem();