作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
使用JTree
时,可以设置DefaultMutableTreeNode
的“用户对象”。这可以是任何类型,但要显示它,使用它的 toString()
值。这不是我需要的。
如何更改用户对象的显示方式?
注意:我的用户对象必须不同于String
,以便能够维护树和用户对象之间的映射。
最佳答案
我不明白你的问题是什么。
DefaultMutableTreeNode
将在用户对象上使用 toString
方法,因为它很有意义。 JTree
需要字符串来绘制对象,因此向您的对象请求它的字符串表示是可以的。
如果你真的需要避免在你的对象上调用toString
,你将需要一种方法来提供它的字符串表示,但你必须编写自己的MutableTreeNode
:
class MyTreeNode implements MutableTreeNode
{
UserObject yourObject;
MyTreeNode(UserObject yourObject)
{
this.yourObject = yourObject;
}
// implement all needed methods to handle children and so on
public String toString()
{
// then you can avoid using toString
return yourObject.sringRapresentation();
}
}
但我真的不明白这样做的意义..此外,您可以尝试通过覆盖 toString
方法来扩展 DefaultMutableTreeNode
,但您将需要一个额外的将需要引用您的对象或一些向下转换。
如果您确实需要与字符串不同的可视化效果,则必须编写自己的实现 TableCellRenderer
的渲染。
关于Java Swing : how do I define how a JTree displays the "user object"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2575126/
我是一名优秀的程序员,十分优秀!