جافا سوينغ: كيف يمكنني تحديد كيف يعرض Jtree "كائن المستخدم"؟
-
24-09-2019 - |
سؤال
عند استخدام 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();
}
}
لكنني حقًا لا أرى الهدف من القيام بذلك .. بالإضافة إلى ذلك يمكنك محاولة توسيع نطاق DefaultMutableTreeNode
عن طريق تجاوز toString
الطريقة ، ولكن ستحتاج إلى إشارة إضافية إلى كائنك أو بعضها هبوط ستكون بحاجة.
إذا كنت بحاجة حقًا إلى تصور مختلف عن السلسلة ، فسيتعين عليك كتابة مقدمة خاصة بك والتي تنفذها TableCellRenderer
.
نصائح أخرى
تجاوز tostring () على كائن المستخدم الخاص بك أو تقديم ملف Treecellrenderer, مثال أساسي
بديل آخر إذا كنت تهتم فقط بالنص المعروض لكائن المستخدم ولا تريد أن تهتم بـ TreecellRender: تمديد Jtree وتجاوز ConvertValuetOtext مع الكود الخاص بك الذي ينشئ سلسلة وصفية لهذا الكائن.