Java swing - الكلاس JTree

Java Swing  الكلاس JTree

الكلاس JTree يستخدم لإضافة قائمة شجرية (Tree) في واجهة المستخدم.
هذه القائمة تظهر ما بداخلها عند النقر عليه.

المقصود من كلمة شجرية هو أن كل كائن بداخلها يمكنه أيضاً إحتواء عدد غير محدد من الكائنات بداخله, و كل كائن يظهر ما بداخله عند النقر عليه.


بنا الكلاس JTree

public class JTree
extends JComponent
implements Scrollable, Accessible
	

مصطلحات حول الكلاس jtree

المصطلح معناه
Root Node تعني أعلا كائن يظهر في الـ Tree.
Parent Node تعني كائن يحتوي على كائن أو أكثر بداخله, و هو يظهرهم عند النقر عليه.
Leaf Node تعني كائن لا يحتوي على كائن بداخله.

طريقة التعامل مع الكلاس JTree

كل شيء يظهر بداخل الـ Tree يسمى Node بشكل عام.
لذلك لإضافة Node فيها, يمكنك إضافته ككائن من الكلاس DefaultMutableTreeNode.
بعدها إستخدم الدالة add() لإضافتهم بداخل بعضهم البعض.
بعدها قم بإنشاء كائن من الكلاس JTree و حدد له الـ Node التي تريد إعتبارها Root Node.

يمكنك وضع كائن الـ JTree بداخل JScrollPane لجعله يظهر Scroll Bar عند الحاجة.

لا تقلق ستفهم كل شيء من الأمثلة.

كونستركتورات الكلاس JTree

الجدول التالي يحتوي على أهم الكونستركتورات الموجودة في الكلاس JTree.

الكونستركتور مع تعريفه
public JTree() ينشئ كائن من الكلاس JTree يمثل Tree فارغ.
public JTree(TreeModel model) ينشئ كائن من الكلاس JTree يمثل Tree تحتوي على كائنات.
مكان الباراميتر model نضع كائن من إحدى الكلاسات التي تنفذ الإنترفيس TreeModel و الذي بدوره يحتوي على جميع الكائنات التي ستظهر في الـ Tree.
public JTree(TreeNode rootNode) ينشئ كائن من الكلاس JTree يمثل Tree تحتوي على كائنات.
مكان الباراميتر root نضع كائن من إحدى الكلاسات التي تنفذ الإنترفيس TreeNode و الذي بدوره يمثل الـ Root Node للـ Tree.

دوال الكلاس JTree

الجدول التالي يحتوي على أهم الدوال الموجودة في الكلاس JTree.

الدالة مع تعريفها
public void setEditable(boolean flag) تستخدم لتحديد إذا كان يمكن تغيير نص الـ Nodes أم لا.
مكان الباراميتر flag نضع true إذا أردنا جعل المستخدم قادراً على تغيير إسم أي Node موجودة في الـ Tree.
و نضع false إذا لم نرد جعله قادراً على تغيير الأسماء.

ملاحظة: إفتراضياً, سيكون على المستخدم النقر ثلاث مرات على إسم أي Node حتى يستطيع تغييره.
public void setToggleClickCount(int clickCount) تستخدم لتحديد كم مرة يجب على المستخدم أن يقوم بالنقر على الـ Node حتى تظهر أو تخفي ما فيها.
مكان الباراميتر clickCount نضع رقم يمثل عدد المرات التي يجب فيها النقر على الـ Node حتى تظهر أو تخفي ما فيها.

ملاحظة: إفتراضياً, سيكون على المستخدم النقر مرتين على الـ Node حتى تظهر أو تخفي ما فيها.
public void setRootVisible(boolean rootVisibilty) تستخدم لإخفاء أو إظهار الـ Root Node.
مكان الباراميتر rootVisibilty نضع true إذا أردنا إخفاء الـ Root Node.
و نضع false إذا أردنا إظهارها.

ملاحظة: إخفاء الـ Root Node لا يعني إخفاء الـ Nodes الموجودين فيها.

طريقة إنشاء قائمة شجرية أو قائمة هرمية JTree   

المثال التالي يعلمك طريقة إنشاء كائن من الكلاس JTree يحتوي على عناصر.


مثال يشرح طريقة إنشاء كائن من الكلاس JTree يحتوي على عناصر.

Main.java
                    import javax.swing.JFrame;
                    import java.awt.GridLayout;
                    import javax.swing.JTree;
                    import javax.swing.tree.DefaultMutableTreeNode;
                    import javax.swing.JScrollPane;

                    public class Main {

                    public static void main(String[] args) {

                    JFrame frame = new JFrame("JTree demo");                  // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
                    frame.setSize(350, 300);                                  // هنا قمنا بتحديد النافذة. عرضها 350 و طولها 300
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
                    frame.setLayout(new GridLayout());                        // في كامل الشاشة مهما كان حجمها Tree لأننا سنضع الـ Layout Manager كـ GridLayout هنا إستخدمنا كائن من الكلاس

                    // Tree التي سنضعها في الـ Nodes هنا قمنا بتعريف جميع الـ
                    DefaultMutableTreeNode menu = new DefaultMutableTreeNode("Menu");
                    DefaultMutableTreeNode food = new DefaultMutableTreeNode("Food");
                    DefaultMutableTreeNode drink = new DefaultMutableTreeNode("Drink");
                    DefaultMutableTreeNode pizza = new DefaultMutableTreeNode("Pizza");
                    DefaultMutableTreeNode hotDogs = new DefaultMutableTreeNode("Hot Dogs");
                    DefaultMutableTreeNode chicken = new DefaultMutableTreeNode("Chicken");
                    DefaultMutableTreeNode hamburger = new DefaultMutableTreeNode("Hamburger");
                    DefaultMutableTreeNode pepsi = new DefaultMutableTreeNode("Pepsi");
                    DefaultMutableTreeNode cola = new DefaultMutableTreeNode("Cola");
                    DefaultMutableTreeNode rani = new DefaultMutableTreeNode("Rani");
                    DefaultMutableTreeNode water = new DefaultMutableTreeNode("Water");

                    // بداخل بعضهم البعض تماماً كما يظهر في نتيجة التشغيل Nodes هنا قمنا بوضع الـ
                    menu.add(food);
                    menu.add(drink);
                    food.add(pizza);
                    food.add(hotDogs);
                    food.add(chicken);
                    food.add(hamburger);
                    drink.add(pepsi);
                    drink.add(cola);
                    drink.add(rani);
                    drink.add(water);

                    // لها Root Node كـ menu مع وضع كائن الـ Tree هنا قمنا بتعريف الـ
                    JTree tree = new JTree(menu);

                    tree.setToggleClickCount(1);     // تظهر ما فيها من نقرة واحدة Node هنا جعلنا أي
                    tree.setEditable(true);          // عند النقر على إسمها ثلاث مرات متتالية Node بالإضافة إلى أنه يمكن تغيير إسم أي

                    JScrollPane treeScroller = new JScrollPane(tree);       // عند الحاجة Scroll Bar لضمان ظهور JScrollPane بداخل كائن من الكلاس tree هنا وضعنا الـ
                    frame.add(treeScroller);                                // frame في الـ treeScroller هنا أضفنا الـ
                    frame.setVisible(true);                                 // هنا جعلنا النافذة مرئية

                    }

                    }
                  

ستظهر لك النافذة التالية عند التشغيل.

طريقة تعريف قائمة شجرية في جافا JTree و إضافة عناصر Nodes فيها

هنا قمنا بإظهار جميع الـ Nodes الموجودين بداخل الـ Tree.

طريقة إظهار العناصر Nodes الموجودين في قائمة شجرية JTree في جافا

  تعلم Java Swing 

أفضل كورس لتعلم Java swing من الصفر الى الاحتراف .