【问题标题】:Very simple JCombobox cell editor issue非常简单的 JCombobox 单元格编辑器问题
【发布时间】:2015-11-24 19:12:18
【问题描述】:

我被一些我确信非常简单的东西难住了。

我有一个带有对象的 Jcombobox 单元格编辑器,可以说是“客户”。 客户有一个“代码”和一个“描述”。 客户的 toString 已被覆盖以返回“代码”。

我在一个表格中有两个单元格,想要一个列出代码,一个列出描述。两个组合框列表都填充了 Customer 对象,都返回 CODE。如何让第二个组合框显示DESCRIPTION?

我尝试创建一个新的子类,它覆盖 toString 方法并用它填充第二个组合框,但为了将值加载到新的子类型中,我必须重新获取数据并创建新的子类类或在“客户”对象上实现克隆方法,每次添加新变量时我都必须更新。

有没有简单的方法覆盖 jcombobox 渲染器?

谢谢

【问题讨论】:

    标签: java jtable jcombobox


    【解决方案1】:

    有没有简单的方法覆盖 jcombobox 渲染器?

    您需要创建自己的自定义渲染器来渲染客户对象的特定属性。

    渲染器的一般形式是:

    class FooRenderer extends BasicComboBoxRenderer
    {
        public Component getListCellRendererComponent(
            JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
        {
            super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
    
            if (value instanceof Foo)
            {
                Foo foo = (Foo)value;
                setText( foo.getDescription() );
            }
    
            return this;
        }
    }
    

    查看Combo Box With Custom Renderer 了解更多信息和更完整的实现。

    【讨论】:

    • 谢谢。详细的,正是我想要的。
    【解决方案2】:

    在 toString 方法中有一个条件语句会起作用吗?如果可能的话,这似乎比覆盖 JComboBox 更容易。

    【讨论】:

    • 这绝对是最简单的解决方案。必须为数组中的每个元素设置它有点麻烦,但令人难以置信的直截了当!
    猜你喜欢
    • 2010-11-16
    • 1970-01-01
    • 2012-10-05
    • 2012-06-13
    • 1970-01-01
    • 2012-09-20
    • 2011-08-25
    • 1970-01-01
    • 2011-10-28
    相关资源
    最近更新 更多