در این قسمت تیم کدگیت را با آموزش Jlist در جاوا همراهی کنید.این آموزش را با توضیح Jlist شروع کرده و پس از معرفی چندین متد این کلاس در جاوا، دو مثال به همراه توضیح را خواهیم زد. پیشنیاز های این آموزش شامل موارد زیر میباشد (پیشنهاد میکنیم قبل از مطالعه این آموزش پیش نیاز ها را بخوانید):
- Jlable در جاوا
- Jbutton در جاوا
- Final در جاوا
- JTable در جاوا (مطالعه این پیشنیاز اختیاری است و برای درک این آموزش بهتر است مطالعه کوتاهی شود).
JList در جاوا
JList در جاوا یک کمپوننت برای نمایش لیستی به صورت متن است. کاربر میتواند یک یا چند گزینه از لیست را انتخاب کند. برای اضافه کردن لیست از ListModel (یک Interface است) استفاده میشود. کلاس DefaultListModel یک پیاده سازی از ListModel بوده و JList از این کلاس استفاده میکند.
Jlist شامل متدهایی است که قابلیتهای متفاوتی دارند. در زیر به معرفی چند متد از این کلاس میپردازیم:
- ()JList: متد Constructor است و لیست خالی ساخته میشود.
- (JList(array[] listdata: متد Constructor است که لیست برای نمایش را به عنوان ورودی میگیرد.
- (JList(ListModel list: متد Constructor است که یک ListModel به عنوان ورودی میگیرد.
- ()getSelectedIndex: اندیس گزینه انتخاب شده توسط کاربر را برمیگرداند. در صورتی که -1 باشد کاربر گزینهای انتخاب نکرده است.
- ()getSelectedValuesList: در صورتی که کاربر چند گزینه انتخاب کند این کلاس یک شی از جنس List<> برمیگرداند که گزینههای انتخابی توسط کاربر در آن است.
مثال اول JList در جاوا
در مثال اول JList در جاوا یک لیست از چندین گزینه را به Frame اضافه میکنیم. کد این مثال به صورت زیر میباشد:
public class ListExample {
ListExample() {
JFrame f = new JFrame();
DefaultListModel<String> l1 = new DefaultListModel<>();
l1.addElement("Item1");
l1.addElement("Item2");
l1.addElement("Item3");
l1.addElement("Item4");
JList<String> list = new JList<>(l1);
list.setBounds(100, 100, 75, 75);
f.add(list);
f.setSize(400, 400);
f.setLayout(null);
f.setVisible(true);
}
public static void main(String args[]) {
new ListExample();
}
}
همانطور که در کد بالا میبینید، ابتدا یک Frame ایجاد کرده سپس با استفاده از کلاس DefaultListModel یک لیست ساخته و آن را به Jlist دادیم.
مثال دوم Jlist در جاوا
در مثال دوم کلاس JList از دو کلاس JButton و JLable کمک گرفته و کد پیچیدهتری زدهایم. در این مثال دو JList ساخته که لیست اول شامل زبانهای برنامه نویسی و لیست دوم شامل FrameWorkهای آنها میباشد. کاربر انتخاب گزینههای مورد نظر، اگر بر روی Button کلیک کند گزینههای انتخاب شده را در Lable نمایش داده میشود. کد این مثال به صورت زیر است:
public class ListExample {
ListExample() {
JFrame f = new JFrame();
final JLabel label = new JLabel();
label.setSize(500, 100);
JButton b = new JButton("Show");
b.setBounds(200, 150, 80, 30);
final DefaultListModel<String> l1 = new DefaultListModel<>();
l1.addElement("C");
l1.addElement("C++");
l1.addElement("Java");
l1.addElement("PHP");
final JList<String> list1 = new JList<>(l1);
list1.setBounds(100, 100, 75, 75);
DefaultListModel<String> l2 = new DefaultListModel<>();
l2.addElement("Turbo C++");
l2.addElement("Struts");
l2.addElement("Spring");
l2.addElement("YII");
final JList<String> list2 = new JList<>(l2);
list2.setBounds(100, 200, 75, 75);
f.add(list1);
f.add(list2);
f.add(b);
f.add(label);
f.setSize(450, 450);
f.setLayout(null);
f.setVisible(true);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String data = "";
if (list1.getSelectedIndex() != -1) {
data = "Programming language Selected: "
+ list1.getSelectedValue();
label.setText(data);
}
if (list2.getSelectedIndex() != -1) {
data += ", FrameWork Selected: ";
for (Object frame : list2.getSelectedValuesList()) {
data += frame + " ";
}
}
label.setText(data);
}
});
}
public static void main(String args[]) {
new ListExample();
}
}
بسیاری از مطالب کد بالا توضیح داده شده است و قسمت کوچکی از آن جدید میباشد که به توضیح آنها میپردازیم. بعد ساختن JButton و JLable و Jlistها یک ActionListener برای Button نوشتیم. با این کار متد actionPerformed هنگام کلیک کاربر اجرا میشود. در متد actionPerformed لیست انتخاب شده در Jlistها را دریافت و در JLable چاپ میکنیم.