Java Swing တွင် JList အသုံးပြုခြင်း
Java Swing တွင် JList သည် user အား list ထဲမှ item တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော item များကို ရွေးချယ်နိုင်စေရန် အသုံးပြုသော component တစ်ခုဖြစ်ပါသည်။ JList သည် JComboBox နှင့် ဆင်တူသော်လည်း၊ ၎င်းသည် list items အားလုံးကို တစ်ပြိုင်နက်တည်း ပြသပေးပြီး၊ scrollable ဖြစ်စေရန် JScrollPane နှင့် တွဲဖက်အသုံးပြုလေ့ရှိပါသည်။ အောက်တွင် JList ကို အသုံးပြု၍ ရိုးရှင်းသော example တစ်ခုကို ဖော်ပြထားပါသည်။
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ListExample {
public static void main(String[] args) {
// JFrame ဖြင့် window တစ်ခုကို ဖန်တီးပါ။
JFrame frame = new JFrame("JList Example");
frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)); // Vertical layout
// JList အတွက် data model ကို ဖန်တီးပါ။
// DefaultListModel သည် list items များကို dynamically ထည့်သွင်းခြင်း၊ ဖယ်ရှားခြင်း ပြုလုပ်နိုင်စေပါသည်။
DefaultListModel<String> listModel = new DefaultListModel<>();
listModel.addElement("Apple");
listModel.addElement("Banana");
listModel.addElement("Orange");
listModel.addElement("Grape");
listModel.addElement("Mango");
listModel.addElement("Pineapple");
// JList ကို ဖန်တီးပါ။
JList<String> fruitList = new JList<>(listModel);
// Selection Mode ကို သတ်မှတ်ပါ။ (Default က SINGLE_SELECTION)
// SINGLE_SELECTION: တစ်ခုတည်းသာ ရွေးချယ်နိုင်ပါသည်။
// SINGLE_INTERVAL_SELECTION: ဆက်တိုက်ရှိသော item များကို ရွေးချယ်နိုင်ပါသည်။
// MULTIPLE_INTERVAL_SELECTION: မည်သည့် item ကိုမဆို ရွေးချယ်နိုင်ပါသည်။
fruitList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
// JList သည် scrollable မဖြစ်သောကြောင့် JScrollPane ဖြင့် ထုပ်ပိုးပါ။
JScrollPane scrollPane = new JScrollPane(fruitList);
scrollPane.setPreferredSize(new java.awt.Dimension(200, 150)); // Scroll pane ၏ size ကို သတ်မှတ်ပါ။
// JButton ဖြင့် Button တစ်ခုကို ဖန်တီးပါ။
JButton submitButton = new JButton("Submit");
// Button ကို နှိပ်သောအခါ လုပ်ဆောင်မည့် event listener ကို ထည့်ပါ။
submitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// JList မှ ရွေးချယ်ထားသော item များကို ရယူပါ။
java.util.List<String> selectedFruits = fruitList.getSelectedValuesList();
if (selectedFruits.isEmpty()) {
JOptionPane.showMessageDialog(frame, "No fruit selected.");
} else {
JOptionPane.showMessageDialog(frame, "Selected Fruits: " + String.join(", ", selectedFruits));
}
}
});
// JPanel ဖြင့် components များကို စီစဉ်ပါ။
JPanel panel = new JPanel();
panel.add(new JLabel("Select fruits:"));
panel.add(scrollPane);
panel.add(submitButton);
// Panel ကို frame ထဲသို့ ထည့်ပါ။
frame.add(panel);
// Window ကို close လုပ်သောအခါ program ကို အလိုအလျောက် ရပ်ပါ။
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Window ၏ size ကို သတ်မှတ်ပါ။
frame.pack(); // Components များ၏ preferred size အတိုင်း window size ကို ချိန်ညှိပါ။
frame.setVisible(true);
}
}Code ရှင်းလင်းချက်
ဒီ code example ထဲက အဓိကကျတဲ့ အစိတ်အပိုင်းတွေကို တစ်ခုချင်းစီ ထပ်ပြီး ရှင်းပြပါမယ်။
JFrame
JFrameသည် Java Swing တွင် window တစ်ခုကို ကိုယ်စားပြုသော class ဖြစ်ပါသည်။ ဤနေရာတွင်JFrameobject တစ်ခုကို"JList Example"ဟူသော title ဖြင့် ဖန်တီးထားပါသည်။BoxLayoutကို အသုံးပြု၍ components များကို ဒေါင်လိုက် (vertical) စီစဉ်ထားပါသည်။javaJFrame frame = new JFrame("JList Example"); frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));DefaultListModel
JListတွင် ပြသလိုသော items များကို စီမံခန့်ခွဲရန်ListModelinterface ကို implement လုပ်ထားသော class တစ်ခု လိုအပ်ပါသည်။DefaultListModelသည် အသုံးအများဆုံး model ဖြစ်ပြီး၊ items များကို dynamically ထည့်သွင်းခြင်း (addElement()) သို့မဟုတ် ဖယ်ရှားခြင်း (removeElement()) ပြုလုပ်နိုင်စေပါသည်။javaDefaultListModel<String> listModel = new DefaultListModel<>(); listModel.addElement("Apple"); // ...JList Creation
JListobject ကို ဖန်တီးရာတွင်DefaultListModelobject ကို constructor ထဲသို့ ထည့်သွင်းပေးရပါသည်။<String>သည် Generic type ဖြစ်ပြီး၊JListတွင် String type item များကို ထည့်သွင်းမည်ဟု ဆိုလိုပါသည်။javaJList<String> fruitList = new JList<>(listModel);

Selection Mode
setSelectionMode()method ကို အသုံးပြု၍JList၏ selection mode ကို သတ်မှတ်နိုင်ပါသည်။ListSelectionModel.SINGLE_SELECTION:
တစ်ကြိမ်လျှင် item တစ်ခုတည်းသာ ရွေးချယ်နိုင်ပါသည်။
ListSelectionModel.SINGLE_INTERVAL_SELECTION:
ဆက်တိုက်ရှိသော item များကိုသာ ရွေးချယ်နိုင်ပါသည်။
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION:
မည်သည့် item ကိုမဆို (Ctrl/Cmd သို့မဟုတ် Shift နှိပ်၍) ရွေးချယ်နိုင်ပါသည်။
javafruitList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

JScrollPane
JListသည် items များပြားလာသောအခါ scrollbar များ အလိုအလျောက် ပေါ်လာခြင်း မရှိပါ။ ထို့ကြောင့်JScrollPaneဖြင့် ထုပ်ပိုးခြင်းဖြင့် scrollable ဖြစ်စေပါသည်။setPreferredSize()ဖြင့် scroll pane ၏ အကြိုက်ဆုံး size ကို သတ်မှတ်နိုင်ပါသည်။javaJScrollPane scrollPane = new JScrollPane(fruitList); scrollPane.setPreferredSize(new java.awt.Dimension(200, 150));JButton
JButtonသည် user interaction ကို ကိုင်တွယ်ရန် အသုံးပြုသော component ဖြစ်ပါသည်။ ဤနေရာတွင်"Submit"ဟူသော text ပါသော Button တစ်ခုကို ဖန်တီးထားပါသည်။javaJButton submitButton = new JButton("Submit");Event Handling with ActionListener
Button ကို နှိပ်သောအခါ
JListမှ ရွေးချယ်ထားသော item များကိုgetSelectedValuesList()method ဖြင့် ရယူပြီး message dialog ဖြင့် ပြသရန်ActionListenerinterface ကို အသုံးပြုထားပါသည်။getSelectedValuesList()သည်java.util.Listကို ပြန်ပေးပါသည်။javasubmitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { java.util.List<String> selectedFruits = fruitList.getSelectedValuesList(); if (selectedFruits.isEmpty()) { JOptionPane.showMessageDialog(frame, "No fruit selected."); } else { JOptionPane.showMessageDialog(frame, "Selected Fruits: " + String.join(", ", selectedFruits)); } } });

JPanel
JPanelသည် components များကို စီစဉ်ရန် အသုံးပြုသော container တစ်ခုဖြစ်ပါသည်။ ဤနေရာတွင်JLabel,JScrollPane(JList ကို ထုပ်ပိုးထားသော), နှင့်JButtonကိုJPanelထဲသို့ ထည့်သွင်းထားပါသည်။javaJPanel panel = new JPanel(); panel.add(new JLabel("Select fruits:")); panel.add(scrollPane); panel.add(submitButton);
JList ၏ အခြား Features များ
ListSelectionListener:
JListတွင် selection ပြောင်းလဲတိုင်း event ကို ကိုင်တွယ်လိုပါကaddListSelectionListener()method ကို အသုံးပြုနိုင်ပါသည်။Custom Renderer:
JList၏ items များကို ပုံမှန် text အပြင် ပုံများ သို့မဟုတ် ပိုမိုရှုပ်ထွေးသော UI များဖြင့် ပြသလိုပါကListCellRendererကို အသုံးပြု၍ custom rendering ပြုလုပ်နိုင်ပါသည်။