Java Swing الكلاس JList
مقدمة الكلاس JList
الكلاس JList
يستخدم لإضافة قائمة (List) في واجهة المستخدم.
عند التعامل مع الـ List فأنت لا تضع فيها العناصر مباشرةً. بل تضع العناصر في الـ Model الخاصة بها.
إذاً سيكون عليك إنشاء كائن من الكلاس DefaultListModel
و وضعه كـ Model لكائن الـ JList
.
بعدها يمكنك إضافة العدد الذي تريده من العناصر في كائن الـ DefaultListModel
و التي ستظهر بدورها في الـ List.
يمكنك أيضاً تحديد طريقة عرض العناصر بداخل القائمة, يمكنك جعلها تظهر أفقياً أو عامودياً.
و يمكنك وضعها بداخل JScrollPane
لجعلها تظهر Scroll Bar عند الحاجة.
لا تقلق ستفهم كل شيء من الأمثلة.
بناؤه
public class JList<E> extends JComponent implements Scrollable, Accessible
كونستركتورات الكلاس JList
الجدول التالي يحتوي على كونستركتورات الكلاس JList
.
الكونستركتور مع تعريفه | |
---|---|
public JList()
ينشئ كائن من الكلاس JList يمثل List فارغة, أي لا تحتوي أي عنصر. |
|
public JList(E[] listData)
ينشئ كائن من الكلاس JList يمثل List فيها خيارات جاهزة.مكان الباراميتر listData نمرر مصفوفة من أي نوع.عناصر هذه المصفوفة هي التي ستظهر كخيارات في القائمة. قد يرمي إستثناء في حال كانت المصفوفة listData فارغة, أي قيمها تساوي null . |
|
public JList(ListModel<E> dataModel)
ينشئ كائن من الكلاس JList يمثل List فيها خيارات جاهزة.مكان الباراميتر dataModel نمرر كائن من الكلاس ListModel .عناصر الكائن dataModel هي التي ستظهر كخيارات في القائمة.يرمي الإستثناء IllegalArgumentException في حال كان كائن الـ dataModel فارغاً, أي قيمته تساوي null . |
دوال الكلاس JList
الجدول التالي يحتوي على بعض دوال الكلاس JList
.
الدالة مع تعريفها | |
---|---|
public void addListSelectionListener(ListSelectionListener listener)
تستخدم لتنفيذ أوامر معينة عند النقر على أي خيار موجود في كائن الـ JList الذي قام بإستدعائها.مكان الباراميتر listener نضع كائن من الكلاس ActionListener و نفعل بداخله Override لدالة إسمها actionPerformed(ActionEvent ae) . |
|
public E getSelectedValue()
ترجع قيمة العنصر الذي قام المستخدم باختياره في كائن الـ JList الذي قام بإستدعائها.في حال قام المستخدم باختيار أكثر من عنصر, فإنها ترجع قيمة العنصر الذي يملك أصغر index بينهم. في حال لم يقم المستخدم باختيار أي عنصر, فإنها ترجع القيمة null . |
|
public int getSelectedIndex()
ترجع رقم يمثل index العنصر الذي قام المستخدم باختياره في كائن الـ JList الذي قام بإستدعائها.في حال قام المستخدم باختيار أكثر من عنصر, ترجع index أصغر عنصر بينهم. |
|
public int[] getSelectedIndices()
ترجع مصفوفة أرقام, كل رقم فيها يمثل index عنصر من العناصر التي قام المستخدم باختيارها في كائن الـ JList الذي قام بإستدعائها. |
|
public void setModel(ListModel<E> model)
تستخدم لتحديد Model كائن الـ JList الذي قام بإستدعائها.مكان الباراميتر model نضع كائن من الكلاس ListModel .ترمي الإستثناء IllegalArgumentException في حال كان كائن الـ dataModel فارغاً, أي قيمته تساوي null . |
|
public ListModel<E> getModel()
ترجع نسخة من كائن الـ ListModel الذي يستخدمه كائن الـ JList الذي قام بإستدعائها. |
|
public void setLayoutOrientation(int layoutOrientation)
تستخدم لتحديد طريقة ظهور العناصر بداخل كائن الـ JList الذي قام بإستدعائها.مكان الباراميتر layoutOrientation نضع إحدى الثوابت الموجودة في الكلاس ListModel المخصصة لتحديد طريقة ظهور العناصر بداخل كائن الـ JList .الثوابت التي يسمح باستخدامها هي:
إفتراضياً, الثابت الذي يستخدم هو JList.VERTICAL .ترمي الإستثناء IllegalArgumentException في حال كان الثابت المستخدم غير مناسب للدالة. |
|
public void setSelectionMode(int selectionMode)
تستخدم لتحديد طريقة ظهور العناصر بداخل كائن الـ JList الذي قام بإستدعائها.مكان الباراميتر layoutOrientation نضع إحدى الثوابت الموجودة في الكلاس ListSelectionModel المخصصة لتحديد طريقة ظهور العناصر بداخل كائن الـ JList .الثوابت التي يسمح باستخدامها هي:
إفتراضياً, الثابت الذي يستخدم هو ListSelectionModel.MULTIPLE_INTERVAL_SELECTION .ترمي الإستثناء IllegalArgumentException في حال كان الثابت المستخدم غير مناسب للدالة. |
أمثلة شاملة الكلاس JList
في جميع الأمثلة سنتعامل مع القائمة كالتالي:
سنقوم بتعريف كائن من الكلاس
JList
و الذي بدوره يمثل القائمة التي ستظهر في واجهة المستخدم.سنقوم بتعريف كائن من الكلاس
DefaultListModel
و الذي سنستخدمه لتخزين العناصر التي ستظهر في القائمة.سنقوم بربط كائن الـ
DefaultListModel
بكائن الـJList
. هنا يمكن ربطهما بطريقتين:
    •من خلال وضع كائن الـDefaultListModel
في كونستركتور كائن الـJList
.
    •من خلال إستدعاء الدالةsetModel()
و تمرير كائن الـDefaultListModel
لها كـ Argument.سنقوم بتعريف كائن من الكلاس
JScrollPane
و نضع كائن الـJList
فيه, و بذلك نضمن ظهور Scroll Bar عند الحاجة.في الأخير, سنقوم بوضع كائن الـ
JScrollPane
في النافذة, و الذي بدوره أصبح يحتوي على القائمة و جميع العناصر التي فيها.
طريقة إنشاء JList
تحتوي على عناصر
المثال التالي يعلمك طريقة إنشاء كائن من الكلاس JList
يحتوي على عناصر.
مثال إنشاء كائن من الكلاس JList
يحتوي على عناصر.
import javax.swing.DefaultListModel; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JScrollPane; public class Main { public static void main(String[] args) { JFrame frame = new JFrame("JList demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس frame.setSize(320, 360); // هنا قمنا بتحديد حجم النافذة. عرضها 320 و طولها 360 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج frame.setLayout(null); // في النافذة بنفسنا List لذلك سنقوم بتحديد مكان الـ Layout Manager أي لم نستخدم أي null هنا وضعنا DefaultListModel model = new DefaultListModel(); // Model أي كأننا قمنا بتعريف .DefaultListModel هنا قمنا بإنشاء كائن من الكلاس JList list = new JList(model); // أي قمنا بتعريف القائمة .model مبنية على الكائن JList هنا قمنا بتعريف كائن من الكلاس JScrollPane listScrollPane = new JScrollPane(list); // عند الحاجة Scroll Bar لضمان ظهور JScrollPane بداخل كائن من الكلاس list هنا وضعنا الـ listScrollPane.setBounds(100, 40, 100, 230); // frame في الـ listScrollPane هنا قمنا بتحديد حجم و موقع الـ model.addElement("red"); // و التي بدورها ستظهر في القائمة model هنا أضفنا عدة عناصر في الـ model.addElement("blue"); model.addElement("green"); model.addElement("yellow"); model.addElement("orange"); model.addElement("brown"); model.addElement("pink"); model.addElement("purple"); model.addElement("gray"); model.addElement("black"); model.addElement("white"); frame.add(listScrollPane); // frame في الـ listScrollPane هنا أضفنا الـ frame.setVisible(true); // هنا جعلنا النافذة مرئية } }
•ستظهر لك النافذة التالية عند التشغيل.
طريقة تغيير نوع و حجم و لون خط عناصر الـ JList
المثال التالي يعلمك طريقة تغيير نوع و حجم و لون خط عناصر كائن الـ JList
.
مثال طريقة تغيير نوع و حجم و لون خط عناصر كائن الـ JList
.
import javax.swing.DefaultListModel; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JScrollPane; public class Main { public static void main(String[] args) { JFrame frame = new JFrame("JList demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس frame.setSize(320, 360); // هنا قمنا بتحديد حجم النافذة. عرضها 320 و طولها 360 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج frame.setLayout(null); // في النافذة بنفسنا List لذلك سنقوم بتحديد مكان الـ Layout Manager أي لم نستخدم أي null هنا وضعنا DefaultListModel model = new DefaultListModel(); // Model أي كأننا قمنا بتعريف .DefaultListModel هنا قمنا بإنشاء كائن من الكلاس JList list = new JList(model); // أي قمنا بتعريف القائمة .model مبنية على الكائن JList هنا قمنا بتعريف كائن من الكلاس JScrollPane listScrollPane = new JScrollPane(list); // عند الحاجة Scroll Bar لضمان ظهور JScrollPane بداخل كائن من الكلاس list هنا وضعنا الـ listScrollPane.setBounds(100, 40, 100, 230); // frame في الـ listScrollPane هنا قمنا بتحديد حجم و موقع الـ Font newFont = new Font("Arial", Font.BOLD, 16); // حجمه 16 Arial يمثل نوع خط عريض إسمه Font هنا أنشأنا كائن من الكلاس list.setFont(newFont); // newFont يستخدم الـ list هنا جعلنا الـ list.setForeground(Color.cyan); // list هنا قمنا بتغير لون كلمات الـ list.setBackground(Color.gray); // list هنا قمنا بتغير لون خلفية الـ model.addElement("red"); // و التي بدورها ستظهر في القائمة model هنا أضفنا عدة عناصر في الـ model.addElement("blue"); model.addElement("green"); model.addElement("yellow"); model.addElement("orange"); model.addElement("brown"); model.addElement("pink"); model.addElement("purple"); model.addElement("gray"); model.addElement("black"); model.addElement("white"); frame.add(listScrollPane); // frame في الـ listScrollPane هنا أضفنا الـ frame.setVisible(true); // هنا جعلنا النافذة مرئية } }
•ستظهر لك النافذة التالية عند التشغيل.
طريقة معرفة عدد و قيم العناصر التي قام المستخدم باختيارها في الـ JList
المثال التالي يعلمك طريقة معرفة عدد و قيم العناصر التي قام المستخدم باختيارها في كائن الـ JList
.
هنا النتيجة تتغير مباشرةً أثناء إختيار العناصر من القائمة.
مثال يشرح طريقة معرفة عدد و قيم العناصر التي قام المستخدم باختيارها في كائن الـ JList
.
import javax.swing.DefaultListModel; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; public class Main { // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها static JFrame frame = new JFrame("JList demo"); static DefaultListModel model = new DefaultListModel(); static JList list = new JList( model ); static JScrollPane listScrollPane = new JScrollPane( list ); static JLabel totalSelected = new JLabel("Total Selected:"); static JLabel selectedItems = new JLabel("Selected Items:"); public static void main(String[] args) { // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ listScrollPane.setBounds(20, 40, 100, 230); totalSelected.setBounds(140, 40, 340, 30); selectedItems.setBounds(140, 80, 340, 30); // و التي بدورها ستظهر في القائمة model هنا أضفنا عدة عناصر في الـ model.addElement("red"); model.addElement("blue"); model.addElement("green"); model.addElement("yellow"); model.addElement("orange"); model.addElement("brown"); model.addElement("pink"); model.addElement("purple"); model.addElement("gray"); model.addElement("black"); model.addElement("white"); // frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ frame.add(listScrollPane); frame.add(totalSelected); frame.add(selectedItems); // frame هنا قمنا بتحديد خصائص الـ frame.setSize(550, 350); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(null); frame.setVisible(true); // list هنا نضع الأوامر التي نريدها أن تتنفذ عند إختيار أي عنصر موجود في القائمة list.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { // سيتم عرض عدد العناصر التي قام المستخدم باختيارها و بالإضافة إلى قيمهم totalSelected.setText("Total Selected: "+list.getSelectedIndices().length); selectedItems.setText("Selected Items: "+list.getSelectedValuesList()); } }); } }
•ستظهر لك النافذة التالية عند التشغيل.
•لإختيار أكثر من عنصر, أبقي إصبعك على الزر Ctrl أثناء إختيار العناصر.
طريقة معرفة عدد و قيم العناصر التي قام المستخدم باختيارها في الـ JList
عند النقر زر
المثال التالي يعلمك طريقة معرفة عدد و قيم العناصر التي قام المستخدم باختيارها في كائن الـ JList
عند النقر على كائن الـ JButton
.
مثال يعلمك طريقة معرفة عدد و قيم العناصر التي قام المستخدم باختيارها في كائن الـ JList
عند النقر على كائن الـ JButton
.
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultListModel; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.JScrollPane; public class Main { // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها static JFrame frame = new JFrame("JList demo"); static DefaultListModel model = new DefaultListModel(); static JList list = new JList( model ); static JScrollPane listScrollPane = new JScrollPane( list ); static JButton viewSelected = new JButton("View Selected"); static JLabel totalSelected = new JLabel(); static JLabel selectedItems = new JLabel(); public static void main(String[] args) { // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ listScrollPane.setBounds(20, 40, 100, 230); viewSelected.setBounds(140, 40, 150, 30); totalSelected.setBounds(140, 80, 340, 30); selectedItems.setBounds(140, 120, 340, 30); // و التي بدورها ستظهر في القائمة model هنا أضفنا عدة عناصر في الـ model.addElement("red"); model.addElement("blue"); model.addElement("green"); model.addElement("yellow"); model.addElement("orange"); model.addElement("brown"); model.addElement("pink"); model.addElement("purple"); model.addElement("gray"); model.addElement("black"); model.addElement("white"); // frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ frame.add(listScrollPane); frame.add(viewSelected); frame.add(totalSelected); frame.add(selectedItems); // frame هنا قمنا بتحديد خصائص الـ frame.setSize(550, 350); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(null); frame.setVisible(true); // viewSelected هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ viewSelected.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // سيتم عرض عدد العناصر التي قام المستخدم باختيارها و بالإضافة إلى قيمهم totalSelected.setText("Total Selected: "+list.getSelectedIndices().length); selectedItems.setText("Selected Items: "+list.getSelectedValuesList()); } }); } }
•ستظهر لك النافذة التالية عند التشغيل. قم بإختيار بعض العناصر ثم أنقر الزر لتظهر لك النتيجة.
•لإختيار أكثر من عنصر, أبقي إصبعك على الزر Ctrl أثناء إختيار العناصر.
طريقة جعل المستخدم على إختيار قيمة واحدة من الـ JList
المثال التالي يعلمك طريقة إجبار المستخدم على إختيار قيمة واحدة من القيم الموجودة في كائن الـ JList
.
كما أنك ستتعلم كيف تجلب القيم التي إختارها المستخدم من قائمتين عند النقر على كائن الـ JButton
.
مثال يبين طريقة إجبار المستخدم على إختيار قيمة واحدة من القيم الموجودة في كائن الـ JList
.
import javax.swing.DefaultListModel; import javax.swing.JList; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.JScrollPane; import javax.swing.ListSelectionModel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Main { // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها static JFrame frame = new JFrame("JList demo"); // هنا قمنا بإنشاء العنوان الذي سنضعه فوق القائمة الأولى static JLabel label_1 = new JLabel("Select Language"); // هنا قمنا بإنشاء القائمة الأولى static DefaultListModel model_1 = new DefaultListModel(); static JList list_1 = new JList( model_1 ); static JScrollPane listScrollPane_1 = new JScrollPane( list_1 ); // هنا قمنا بإنشاء العنوان الذي سنضعه فوق القائمة الثانية static JLabel label_2 = new JLabel("Select Level"); // هنا قمنا بإنشاء القائمة الثانية static DefaultListModel model_2 = new DefaultListModel(); static JList list_2 = new JList( model_2 ); static JScrollPane listScrollPane_2 = new JScrollPane( list_2 ); // هنا قمنا بإنشاء الزر الموضوع تحت القائمتين و العناوين الذي سيظهر عند النقر على الزر/span> static JButton btn = new JButton("View Selected"); static JLabel label_3 = new JLabel("", JLabel.CENTER); public static void main(String[] args) { // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ label_1.setBounds(50, 25, 100, 30); listScrollPane_1.setBounds(50, 60, 100, 94); label_2.setBounds(190, 25, 100, 30); listScrollPane_2.setBounds(190, 60, 100, 94); btn.setBounds(100, 200, 130, 30); label_3.setBounds(0, 250, 350, 30); // و التي بدورها ستظهر في القائمة الأولى model_1 هنا أضفنا عدة عناصر في الـ model_1.addElement("java"); model_1.addElement("c"); model_1.addElement("c++"); model_1.addElement("c#"); model_1.addElement("vb"); // و التي بدورها ستظهر في القائمة الثانية model_2 هنا أضفنا عدة عناصر في الـ model_2.addElement("101"); model_2.addElement("102"); model_2.addElement("103"); // هنا جعلنا أول قيمة في القائمة الأولى مختارة إفتراضياً بالإضافة إلى أن المستخدم لا يستطيع إختيار أكثر من قيمة منها في وقت واحد list_1.setSelectedIndex(0); list_1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // هنا جعلنا أول قيمة في القائمة الثانية مختارة إفتراضياً بالإضافة إلى أن المستخدم لا يستطيع إختيار أكثر من قيمة منها في وقت واحد list_2.setSelectedIndex(0); list_2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ frame.add(label_1); frame.add(listScrollPane_1); frame.add(label_2); frame.add(listScrollPane_2); frame.add(btn); frame.add(label_3); // frame هنا قمنا بتحديد خصائص الـ frame.setSize(350, 350); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(null); frame.setVisible(true); // btn هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // سيتم عرض القيم التي إختارها المستخدم أسفل الزر label_3.setText("You select: " + list_1.getSelectedValue() + " [ " + list_2.getSelectedValue() + " ]" ); } }); } }
•ستظهر لك النافذة التالية عند التشغيل. قم بإختيار أي عنصر من القائمتين ثم أنقر الزر لتظهر لك النتيجة.
•لاحظ أيضاً أنه في كلا القائمتين لا يمكنك إختيار أكثر من عنصر.
طريقة جعل المستخدم يضيف و يحذف قيم في JList
المثال التالي يعلمك طريقة جعل المستخدم يدخل قيم في كائن الـ JList
, بالإضافة إلى جعله قادر على حذف القيم التي أدخلها.
مثال طريقة جعل المستخدم يدخل قيم في كائن الـ JList
, بالإضافة إلى جعله قادر على حذف القيم التي أدخلها.
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.DefaultListModel; import javax.swing.JScrollPane; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.JTextField; public class Main { // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها static JFrame frame = new JFrame("JList demo"); static DefaultListModel model = new DefaultListModel(); static JList list = new JList( model ); static JLabel label = new JLabel("Enter Item"); static JScrollPane listScrollPane = new JScrollPane( list ); static JTextField textField = new JTextField(); static JButton addButton = new JButton("Add Item"); static JButton removeButton = new JButton("Remove"); static JButton removeAllButton = new JButton("Remove All"); static JLabel totalLabel = new JLabel("Total Items: 0"); static int itemsNumber = 0; public static void main(String[] args) { // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ label.setBounds(20, 80, 70, 30); textField.setBounds(100, 80, 100, 30); listScrollPane.setBounds(350, 40, 150, 180); addButton.setBounds(220, 80, 100, 30); removeButton.setBounds(220, 120, 100, 30); removeAllButton.setBounds(220, 160, 100, 30); totalLabel.setBounds(350, 230, 100, 30); // frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ frame.add(label); frame.add(textField); frame.add(addButton); frame.add(removeButton); frame.add(removeAllButton); frame.add(listScrollPane); frame.add(totalLabel); // frame هنا قمنا بتحديد خصائص الـ frame.setSize(550, 350); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(null); frame.setVisible(true); // addButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if( !textField.getText().equals("") ) { // سيتم إضافة القيمة التي أدخلها المستخدم في مربع النص في القائمة و تحديث عدد العناصر model.addElement( textField.getText() ); itemsNumber++; totalLabel.setText( "Total Items: " + itemsNumber ); } } }); // removeButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ removeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // إذا كان المستخدم قد قام بتحديد عنصر واحد على الأقل من عناصر القائمة if( list.getSelectedIndex() != -1 ) { // كل عنصر تم تحديده فيها ليتم حذفه من خلاله index سيتم تخزين int[] selectedIndices = list.getSelectedIndices(); for( int i=selectedIndices.length-1; i>=0; i-- ) { model.removeElementAt( selectedIndices[i] ); itemsNumber--; } } // سيتم تحديث عدد العناصر الموجودة في القائمة totalLabel.setText( "Total Items: " + itemsNumber ); } }); // removeAllButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ removeAllButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // سيتم حذف جميع قيم القائمة و تصفير عدد العناصر الموجودة فيها model.removeAllElements(); itemsNumber = 0; totalLabel.setText( "Total Items: " + itemsNumber ); } }); } }
•ستظهر لك النافذة التالية عند التشغيل.
•ملاحظة لإلغاء أكثر من عنصر في نفس الوقت, أبق إصبعك على الزر Ctrl أثناء إختيار العناصر, بعدها أنقر على الزر Remove لإلغائهم.
تغيير طريقة عرض العناصر بداخل الـ JList
المثال التالي يعلمك تغيير طريقة عرض العناصر بداخل كائن الـ JList
.
هنا قمنا بوضع نفس كائن الـ DefaultListModel
بداخل ثلاث كائنات من الكلاس JList
لكننا قمنا بتغيير طريقة عرض العناصر في كل كائن منهم.
مثال يعلمك تغيير طريقة عرض العناصر بداخل كائن الـ JList
.
import javax.swing.DefaultListModel; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JScrollPane; public class Main { public static void main(String[] args) { // و تحديد خصائصها frame هنا قمنا بتحديد الـ JFrame frame = new JFrame("JList demo"); frame.setSize(530, 280); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(null); // Model أي كأننا قمنا بتعريف .DefaultListModel هنا قمنا بإنشاء كائن من الكلاس DefaultListModel model = new DefaultListModel(); // و التي بدورها ستظهر في كل قائمة تستخدمها model هنا أضفنا عدة عناصر في الـ model.addElement("Mhamad"); model.addElement("Ahmad"); model.addElement("Salem"); model.addElement("Khaled"); model.addElement("Omar"); model.addElement("Said"); model.addElement("Moumen"); model.addElement("Moustafa"); model.addElement("Nidal"); model.addElement("Samir"); model.addElement("Mahmoud"); model.addElement("Rida"); model.addElement("Raja"); model.addElement("Ziad"); model.addElement("Fouad"); model.addElement("Mounir"); model.addElement("Wassim"); model.addElement("Mansour"); model.addElement("Majd"); model.addElement("Kassem"); model.addElement("Ali"); model.addElement("Yahya"); model.addElement("Jamal"); // Model أي ثلاث قوائم. و كلها مبنية تستخدم نفس الـ ,JList هنا قمنا بتعريف ثلاث كائنات من الكلاس JList list_1 = new JList(model); JList list_2 = new JList(model); JList list_3 = new JList(model); // هنا قمنا بتحديد طريقة ظهور العناصر بداخل كل قائمة list_1.setLayoutOrientation(JList.VERTICAL); list_2.setLayoutOrientation(JList.VERTICAL_WRAP); list_3.setLayoutOrientation(JList.HORIZONTAL_WRAP); // عند الحاجة Scroll Bar لضمان ظهور JScrollPane بداخل كائن من الكلاس هنا قمنا بوضع كل قائمة أنشأناها بداخل كائن من الكلاس JScrollPane listScrollPane_1 = new JScrollPane(list_1); JScrollPane listScrollPane_2 = new JScrollPane(list_2); JScrollPane listScrollPane_3 = new JScrollPane(list_3); // frame هنا قمنا بتحديد أماكن القوائم التي سنضيفها في الـ listScrollPane_1.setBounds(40, 40, 100, 150); listScrollPane_2.setBounds(200, 40, 120, 150); listScrollPane_3.setBounds(360, 40, 120, 150); // frame هنا قمنا بإضافة جميع القوائم التي قمنا بتعريفها سابقاً في الـ frame.add(listScrollPane_1); frame.add(listScrollPane_2); frame.add(listScrollPane_3); // هنا جعلنا النافذة مرئية frame.setVisible(true); } }
•ستظهر لك النافذة التالية عند التشغيل.