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

then you have to override isSelected, and extends JLabel is useless, because renderer by defalult returns JLabel as Component

于 2011-07-18T13:58:59.610 回答
0

combobox;您只需要在单行代码中获取文本。

创建一个变量,正如我所说的那样Combotext

然后SelectedItemJComboBox.

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