【问题标题】:Showing the JComboBox selected item text only without the Icon?仅显示没有图标的 JComboBox 选定项文本?
【发布时间】:2011-07-18 13:54:47
【问题描述】:

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

当我从组合框中选择一个项目时,我只想在组合框中显示所选项目的文本,而不是项目图标。 有什么办法可以做到吗?

【问题讨论】:

    标签: java swing icons jcombobox renderer


    【解决方案1】:

    在渲染代码中你可以检查索引。比如:

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

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

    【讨论】:

    • 它看起来像是 ActionListener 的工作,而不是 ItemListener +1
    • @camickr:是的,它有效......非常感谢。只是为了理解这一点:当我说 (index == -1) 它呈现 ComboBox 的编辑器而不是 Popup 或什么?
    【解决方案2】:

    那么你必须重写isSelected,而extends JLabel是没用的,因为默认渲染器返回JLabel作为组件

    【讨论】:

      【解决方案3】:

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

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

      然后从JComboBox 获取SelectedItem。

       ComboText = jComboBox.getSelectedItem(); 
      

      【讨论】:

      • 1) Combotext 和 ComboText 都不匹配常见的 Java 命名法。应该是comboText。 2)JComboBox可以包含Object,所以如果你在String之后,就需要调用jComboBox.getSelectedItem().toString();
      • 不是问题的答案(这是关于所选项目的不同渲染,而不是关于如何获取该项目)
      • 有些怎么会在这里结束,这就是我要找的:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 2015-09-26
      相关资源
      最近更新 更多