仅显示 JComboBox 所选项目文本而不显示图标?

发布于 2024-11-25 06:02:33 字数 711 浏览 1 评论 0原文

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

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

I have a JComboBox that its renderer is a JLabel with an Icon for each item in the combo list :

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;
    }
}

When i select an item from the comboBox i just want to show the selected item text in the comboBox, and not the item icon also. Is there a way i can do that ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

故人的歌 2024-12-02 06:02:33

在渲染代码中您可以检查索引。类似于:

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

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

In the rendering code you can check the index. Something like:

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

Also, you should not be reading the image in the rendering code since code is called frequently.

昔日梦未散 2024-12-02 06:02:33

那么你必须覆盖 isSelected ,并且 extends JLabel 是无用的,因为渲染器默认返回 JLabel 作为组件

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

装纯掩盖桑 2024-12-02 06:02:33

要获取组合框中的文本;您只需要一个单行代码即可。

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

,然后从 JComboBox 获取 SelectedItem

 ComboText = jComboBox.getSelectedItem(); 

To get the text in the combobox; a one liner code is all you need.

Create a variable, as I have called mine Combotext

then get the SelectedItem from the JComboBox.

 ComboText = jComboBox.getSelectedItem(); 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文