جافا سوينغ: كيف يمكنني تحديد كيف يعرض Jtree "كائن المستخدم"؟

StackOverflow https://stackoverflow.com/questions/2575126

سؤال

عند استخدام 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 مع الكود الخاص بك الذي ينشئ سلسلة وصفية لهذا الكائن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top