我被一些我确定非常简单的事情所困扰。
我有一个带有对象的Jcombobox单元格编辑器,让我们说'客户' 客户有一个代码'以及'描述' 客户的toString已被覆盖以返回'代码'。
我在表格中有两个单元格,希望有一个列出代码,一个列出描述。两个组合框列表都填充了Customer对象,都返回CODE。如何让第二个组合框显示描述?
我试图创建一个新的子类,它覆盖toString方法并用它填充第二个组合框但是为了将值加载到新的子类型中我必须重新分配数据并创建新的子类或在'客户'上实施克隆方法我每次添加新变量时都必须更新的对象。
是否有一种简单的方法来覆盖jcombobox渲染器?
由于
答案 0 :(得分:2)
是否有一种简单的方法来覆盖jcombobox渲染器?
您需要创建自己的自定义渲染器以呈现Customer对象的特定属性。
渲染器的一般形式是:
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以获取更多信息和更完整的实施。
答案 1 :(得分:1)
是否可以在toString方法中使用条件语句?如果可能的话,这似乎比重写JComboBox更容易。