[英]Java Swing: how do I define how a JTree displays the “user object”?
使用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
。
覆蓋用戶對象上的toString()或提供TreeCellRenderer , 基本示例
如果您只關心為用戶對象顯示的文本並且不想使用TreeCellRender,則另一種選擇:擴展JTree並使用您自己的代碼覆蓋convertValueToText ,該代碼為該對象創建描述性字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.