繁体   English   中英

非常简单的JCombobox单元编辑器问题

[英]Very simple JCombobox cell editor issue

我很困惑,我确信这很简单。

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

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

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

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

谢谢

有没有简单的方法可以覆盖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;
    }
}

请查看带有自定义渲染器的组合框,以获取更多信息和更完整的实现。

在toString方法中包含条件语句是否可行? 如果可能的话,这似乎比覆盖JComboBox容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM