Java Swing setEditable(布尔)在带有自定义渲染器的JComboBox中不工作

Java Swing setEditable(布尔)在带有自定义渲染器的JComboBox中不工作,java,swing,jcombobox,packaging,renderer,Java,Swing,Jcombobox,Packaging,Renderer,我有一个JComboBox类型的myclass。我使用CustomListRender来显示myclass的一个属性,它工作正常 然后我设置myCombobox.setEditable(true)JComboBox可编辑,但默认情况下,文本在组合框中设置为类似以下内容: com.mypackagename.myclass 有人能告诉我如何解决这个问题吗 提前感谢。如中所述 默认渲染器知道如何渲染字符串和图标。如果将其他对象放入组合框中,默认呈现器将调用toString方法来提供要显示的字符串

我有一个
JComboBox
类型的
myclass
。我使用
CustomListRender
来显示
myclass
的一个属性,它工作正常

然后我设置myCombobox.setEditable(true)
JComboBox
可编辑,但默认情况下,文本在
组合框中设置为类似以下内容:

 com.mypackagename.myclass
有人能告诉我如何解决这个问题吗

提前感谢。

如中所述

默认渲染器知道如何渲染字符串和图标。如果将其他对象放入组合框中,默认呈现器将调用
toString
方法来提供要显示的字符串


除非重写,否则您可能会看到从
对象继承的实现。至少,您需要重写
MyClass#toString()
或相应地更新渲染器提供的代码;有一个相关的例子。大多数人倾向于后者;显示自定义渲染器将更容易建议备选方案。

也许您还需要创建并使用自定义ComboBox编辑器。您可以使用setSelectedIndex(int-anIndex)或setSelectedItem(Object-anObject)初始化组合框。
MyClass
用于符合Java类命名约定。据我所知,他已经有了自定义的呈现程序。他还需要一个自定义编辑器,以避免标准编辑器的
toString
调用。我不太喜欢为UI重写
到字符串
purposes@Robin:关于编辑的好观点;更新。我希望有一个比我引用的更相关的例子。我对重写
toString()
(比如在
enum
中)更为乐观。我将重点放在这一点上,以解释问题中提到的(假定的)结果。你能详细说明一下这些陷阱吗?这不是真正的陷阱,只是即使在生产代码中,我也敢定期更改
toString
方法以提供更好的信息(例如在记录器中打印更多信息)。在这种情况下,通过使用默认呈现器/编辑器(自定义呈现器/编辑器)隐藏对该方法的依赖可能会破坏UI。我的IDE永远不会发现渲染器中使用了
toString