1: الجدول (JTable):
1. المفاهيم الأساسية:
الجدول (JTable) هو مكون تمت إضافته حديثًا إلى Swing، وهو يستخدم بشكل أساسي لعرض البيانات في شكل جدول، ويوفر آلية بسيطة لعرض كتل كبيرة من البيانات.
2. طرق البناء شائعة الاستخدام:
* JTable (): قم بإنشاء مثيل JTable باستخدام النموذج الافتراضي للنظام.
* JTable(int numRows, int numColumns): قم بإنشاء جدول فارغ باستخدام DefaultTableModel لتحديد الصفوف والأعمدة.
* JTable(Object[ ][ ]rowData,Object[ ][ ] columnNames): قم بإنشاء جدول يعرض بيانات ثنائية الأبعاد.
يمكن إنشاء الجداول مباشرة باستخدام صفائف اسم أعمدة الجدول وصفائف بيانات الجدول.
* JTable(TableModel dm): قم بإنشاء مثيل JTable يحدد مخطط البيانات ومخطط الحقل الافتراضي.
عادةً ما يتم استخدام كائنات فئة نموذج البيانات لحفظ البيانات، ويتم إنشاء نماذج الجدول من خلال صفائف اسم أعمدة الجدول وصفائف بيانات الجدول.
3. الطرق شائعة الاستخدام:
4. الحالة الشاملة:
الكود 1:
انسخ رمز الكود كما يلي:
الطبقة العامة JTableDemo1 تمتد JFrame {
// تحديد الجدول
جدول جي تيبل؛
// تحديد لوحة شريط التمرير (لجعل الجدول قابلاً للتمرير)
JScrollPanescrollPane;
// تحديد كائن فئة نموذج البيانات (المستخدم لحفظ البيانات)،
DefaultTableModel tableModel;
JTableDemo1 العامة () {
ممتاز()؛
setTitle("نموذج الجدول والجدول");
ScrollPane = new JScrollPane();
// تحديد صفيف اسم عمود الجدول
String[] columnNames = { "A"، "B"، "C" };
// تحديد صفيف بيانات الجدول
String[][] tableValues = { { "A1"، "B1"، "C1" }، { "A2"، "B2"، "C2" }،
{ "A3"، "B3"، "C3" }، { "A4"، "B4"، "C4" } };
// أنشئ كائنًا من فئة نموذج الجدول مع تحديد أسماء أعمدة الجدول وبيانات الجدول
tableModel = new DefaultTableModel(tableValues, columnNames);
// أنشئ جدولًا لنموذج الجدول المحدد
table = new JTable(tableModel);
//Set RowSorter (يتم استخدام RowSorter لتوفير الفرز والتصفية لـ JTable).
table.setRowSorter(new TableRowSorter<DefaultTableModel>(tableModel));
ScrollPane.setViewportView(table);
getContentPane().add(scrollPane, BorderLayout.CENTER);
setBounds(300, 200, 400, 300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[]) {
جديد JTableDemo1();
}
}
لقطة الشاشة 1:
الكود 2:
انسخ رمز الكود كما يلي:
import java.awt.*;
استيراد javax.swing.*;
الطبقة العامة JTableDemo3 {
إطار JFrame؛
لوحة JPanel؛
JScrollPanescrollPane1،scrollPane2،scrollPane3؛
JTable jtable1, jtable2, jtable3;
JTableDemo3 العامة () {
frame = new JFrame("JTableDemo");
jtable1 = new JTable(8, 6);
Final Object[] columnNames = { "Name"، "Gender"، "Home Address"، // من الأفضل تعديل أسماء الأعمدة باستخدام Final
"رقم الهاتف"، "عيد الميلاد"، "الوظيفة"، "الدخل"، "الحالة الاجتماعية"، "الحالة الاجتماعية" };
كائن[]] صف البيانات = {
{ "ddd"، "ذكر"، "نانجينغ، جيانغسو"، "1378313210"، "24/03/1985"، "طالب"، "طفيلي"،
"غير متزوج"، "ليس" }،
{ "eee"، "أنثى"، "نانجينغ، جيانغسو"، "13645181705"، "xx/xx/1985"، "مدرس"، "غير معروف"،
"غير متزوج"، "يبدو أنه لا" }،
{ "ffff"، "ذكر"، "نانجينغ، جيانغسو"، "13585331486"، "1985/12/08"، "بائع سيارات"،
"غير متأكد"، "غير متزوج"، "نعم" }،
{ "ggg"، "أنثى"، "نانجينغ، جيانغسو"، "81513779"، "xx/xx/1986"، "مضيفة فندق"،
"مصمم ولكن غير معروف"، "غير متزوج"، "نعم" }،
{ "hhh"، "ذكر"، "نانجينغ، جيانغسو"، "13651545936"، "xx/xx/1985"، "طالب"، "في المنفى"،
"غير متزوج"، "ليس بعد عدة انفصالات" } };
jtable2 = new JTable(rowData, columnNames);
jtable3 = new JTable(rowData, columnNames);
jtable3.setPreferredScrollableViewportSize(new Dimension(600, 100));// تعيين حجم الجدول
jtable3.setRowHeight(30);// اضبط ارتفاع كل صف على 20
jtable3.setRowHeight(0, 20);// اضبط ارتفاع الصف 1 إلى 15
jtable3.setRowMargin(5);// اضبط المسافة بين صفين متجاورين من الخلايا
jtable3.setRowSelectionAllowed(true); // تحديد ما إذا كان يمكن تحديده أم لا
jtable3.setSelectionBackground(Color.white);// اضبط لون الخلفية للصف المحدد
jtable3.setSelectionForeground(Color.red);// قم بتعيين اللون الأمامي للصف المحدد
jtable3.setGridColor(Color.red);// اضبط لون خطوط الشبكة
jtable3.selectAll();// حدد جميع الصفوف
jtable3.setRowSelectionInterval(0, 2);// قم بتعيين صف التحديد الأولي، هنا الصفوف من 1 إلى 3 كلها في الحالة المحددة
jtable3.clearSelection();//إلغاء التحديد
jtable3.setDragEnabled(false); // لا أفهم هذا
jtable3.setShowGrid(true);// ما إذا كان سيتم عرض خطوط الشبكة
jtable3.setShowHorizontalLines(true); // ما إذا كان سيتم عرض خطوط الشبكة الأفقية
jtable3.setShowVerticalLines(true); // ما إذا كان سيتم عرض خطوط الشبكة العمودية
jtable3.setValueAt("tt", 0, 0);// قم بتعيين قيمة خلية معينة، هذه القيمة هي كائن
jtable3.doLayout();
jtable3.setBackground(Color.cyan);
// من الأفضل إضافة JTable إلى JScrollPane لتحقيق تأثير التمرير
ScrollPane1 = new JScrollPane(jtable1);
ScrollPane2 = new JScrollPane(jtable2);
ScrollPane3 = new JScrollPane(jtable3);
Panel = new JPanel(new GridLayout(0, 1));
Panel.setPreferredSize(new Dimension(600, 400));
Panel.setBackground(Color.black);
Panel.add(scrollPane1);
Panel.add(scrollPane2);
Panel.add(scrollPane3);
frame.setContentPane(panel);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
جديد JTableDemo3();
}
}
لقطة الشاشة 2:
الثاني: الشجرة (JTree):
1. المفاهيم الأساسية:
الشجرة (JTree): عنصر تحكم يعرض مجموعات البيانات الهرمية كمخططات تفصيلية.
2. طرق البناء شائعة الاستخدام:
JTree (): إرجاع JTree مع نموذج النموذج.
JTree(Object[] value): إرجاع JTree مع تحديد كل عنصر في المصفوفة كعقدة فرعية للعقدة الجذرية الجديدة التي لا يتم عرضها.
// يمكن لهذا المنشئ فقط إنشاء عقد جذر متعددة
JTree(Object[] value): إرجاع JTree مع تحديد كل عنصر من عناصر المصفوفة كعقدة فرعية للعقدة الجذرية الجديدة التي لا يتم عرضها.
JTree(TreeNode root): يُرجع JTree مع TreeNode المحدد كجذر له، والذي يعرض العقدة الجذرية.
JTree (جذر TreeNode، منطقية AskAllowsChildren): إرجاع JTree مع TreeNode المحدد كجذر له.
يعرض العقدة الجذرية بطريقة محددة ويحدد ما إذا كانت العقدة عبارة عن عقدة طرفية. (اضبط على صحيح لإضافة العقد الفرعية، ثم قم بإضافة العقد الفرعية).
3. عرض الكود:
مثال 1:
انسخ رمز الكود كما يلي:
الطبقة العامة JTreeDemo1 {
JFrame و؛
صندوق صندوق؛
جي تري جي تري 1، جي تري 2؛
JTreeDemo1 العامة ()
{
f = new JFrame("JTreeDemo1");
box = Box.createHorizontalBox(); // إنشاء كائن فئة Box
jTree1 = new JTree();
jTree2 = new JTree();
// أضف مفاتيح / قيم عشوائية إلى هذا المكون
jTree1.putClientProperty("JTree.lineStyle", "Angled");
// أضف لوحة تمرير إلى حاوية Box
box.add(new JScrollPane(jTree1), BorderLayout.WEST);
box.add(new JScrollPane(jTree2), BorderLayout.EAST);
f.getContentPane().add(box, BorderLayout.CENTER);
f.setSize(300, 240);
//f.pack();
f.setLocation(300, 200);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
جديد JTreeDemo1();
}
}
لقطة الشاشة 1:
مثال 2:
انسخ رمز الكود كما يلي:
الطبقة العامة JTreeDemo2 {
JFrame و؛
JPanel ص؛
جي تري jTree1,jTree2,jTree3,jTree4,jTree5,jTree6,jTree7;
عامة JTreeDemo2() {
f = new JFrame("JTreeDemo2");
// المُنشئ: JTree()
jTree1 = new JTree();
// المنشئ: JTree (قيمة الكائن [])
كائن[] الحروف = { "a"، "b"، "c"، "d"، "e" };
jTree2 = new JTree(letter);
// المنشئ: JTree (جذر TreeNode) (TreeNode فارغ)
// أنشئ شجرة بعقد فارغة
DefaultMutableTreeNodeNode1 = new DefaultMutableTreeNode();// تحديد عقد الشجرة
jTree3 = new JTree(node1); // استخدم عقدة الشجرة هذه كمعلمة لاستدعاء مُنشئ JTree لإنشاء شجرة ذات عقدة جذر
// المنشئ: JTree (جذر TreeNode) (كما هو مذكور أعلاه، باستثناء أن TreeNode ليس فارغًا)
// أنشئ شجرة ذات عقدة جذر
DefaultMutableTreeNode Node2 = new DefaultMutableTreeNode("Color");
jTree4 = new JTree(node2); // لا يمكن تلوين العقد، الافتراضي هو الأبيض مع النص الأسود
jTree4.setBackground(Color.lightGray);
// المُنشئ: JTree(TreeNode root, boolean
// AskAllowsChildren) (كما هو مذكور أعلاه، لكن TreeNode مختلف)
// استخدم فئة DefaultMutableTreeNode لإنشاء شجرة ذات عقدة جذر أولاً، ثم قم بتعيينها لإضافة عقد فرعية، ثم قم بإضافة عقد فرعية.
DefaultMutableTreeNode color = new DefaultMutableTreeNode("Color ",
حقيقي)؛
DefaultMutableTreeNode grey = new DefaultMutableTreeNode("Gray");
grey.add(new DefaultMutableTreeNode("Lightgray"));
grey.add(new DefaultMutableTreeNode("Darkgray"));
color.add(رمادي);
color.add(new DefaultMutableTreeNode("Red"));
color.add(new DefaultMutableTreeNode("Green"));
jTree5 = new JTree(color);
// المنشئ: JTree (جذر TreeNode) (كما هو مذكور أعلاه، باستثناء أن TreeNode ليس فارغًا)
// أنشئ شجرة بإضافة العقد واحدة تلو الأخرى
بيولوجيا DefaultMutableTreeNode = جديد DefaultMutableTreeNode("علم الأحياء");
DefaultMutableTreeNode Animal = new DefaultMutableTreeNode("Animal");
DefaultMutableTreeNode الثدييات = جديد DefaultMutableTreeNode("Mammal");
DefaultMutableTreeNode horse = new DefaultMutableTreeNode("Horse");
الثدييات.إضافة(حصان);
Animal.add(mammal);
biologique.add(animal);
jTree6 = new JTree(biology);
horse.isLeaf();
horse.isRoot();
// المنشئ: JTree (TreeModel newModel)
// استخدم فئة DefaultMutableTreeNodel لتعريف عقدة ثم استخدم هذه العقدة كمعلمة لتعريف عقدة باستخدام DefaultTreeMode
// قم بإنشاء نموذج شجرة، ثم استخدم مُنشئ JTree لإنشاء شجرة
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root1");
DefaultMutableTreeNode Child1 = new DefaultMutableTreeNode(" Child1 ");
DefaultMutableTreeNode Child11 = new DefaultMutableTreeNode(" Child11 ");
DefaultMutableTreeNode Child111 = جديد DefaultMutableTreeNode(
"الطفل111");
root.add(child1);
Child1.add(child11);
Child11.add(child111);
DefaultTreeModel model = new DefaultTreeModel(root);
jTree7 = new JTree(model);
ع = جديد JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
p.setPreferredSize(new Dimension(700, 400));
// يجب وضع JTree على JScrollPane
p.add(new JScrollPane(jTree1));
p.add(new JScrollPane(jTree2));
p.add(new JScrollPane(jTree3));
p.add(new JScrollPane(jTree4));
p.add(new JScrollPane(jTree5));
p.add(new JScrollPane(jTree6));
p.add(new JScrollPane(jTree7));
f.setContentPane(p);
f.pack();
f.setLocation(300, 200);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
جديد JTreeDemo2();
}
}
لقطة الشاشة 2: