Bu yazıda JButton, JTextField ve JList kullanarak liste içindeki seçili olan öğeyi güncellemeyi göstereceğim. Bu örnek daha önce yazdığım JList Eleman Ekleme – Silme, JButton Tıklama ve JButton ile JTextField kullanımı konularının birleşimi bir örnek olacaktır.
İlk olarak Java’da bir butona tıklandığında ActionListener arayüzüne bildirilir. Bu arayüz’de bulunan ve override yapılması gereken actionPerformed() abstract metodu ile tıklama olayı kontrol edilmektedir.
JList içinde aynı işlemler ListSelectionListener arayüzü de JList nesneleri için kullanılır. Bu arayüzüde valueChanged() metodu override yapılarak liste ile ilgili işlemleri yapılabilir.
Adım 1: GUI Nesnelerinin oluşturulması(JFrameOrnek.java)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import javax.swing.*; import java.awt.*; import java.awt.event.*; public class JFrameOrnek{ public JFrame frame; public JButton btn; public JTextField textField; public JList jList; public DefaultListModel<String> listModel; public JFrameOrnek() { //Örnek Frame Oluşturma frame = new JFrame(); //Button Oluşturma btn = new JButton("TIKLA"); btn.setBounds(30,30,100,40); frame.add(btn); //TextField Oluşturma textField = new JTextField(); textField.setBounds(150,30,100,40); frame.add(textField); listModel = new DefaultListModel<String>(); listModel.addElement("öğe 1"); listModel.addElement("öğe 2"); listModel.addElement("öğe 3"); listModel.addElement("öğe 4"); jList = new JList(listModel); jList.setBounds(30, 80, 220, 100); frame.add(jList); frame.setTitle("Pencere"); frame.getContentPane().setLayout(null); frame.setVisible(true); frame.setBounds(200,200,400,400); } } |
Main.java
1 2 3 4 5 6 7 | public class Main{ public static void main(String[] args) { new JFrameOrnek(); } } |
Adım 2: JList item click olayı (JFrameOrnek.java)
1 2 3 4 5 6 7 8 9 10 11 12 13 | jList.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent evt) { index = (int) jList.getSelectedIndex(); //seçili index if (index >=0) { textField.setText((String)listModel.getElementAt(index)); } } }); |
Adım 3: Button tıklama olayı
1 2 3 4 5 6 7 8 9 | btn.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ if (index >=0) listModel.setElementAt(textField.getText(),index); } }); |
Kodları toparlayıp yazacak olursak. JFrameOrnek.java dosyasının içeriği şu şekilde olacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | import javax.swing.*; import java.awt.event.*; import javax.swing.event.*; public class JFrameOrnek{ public JFrame frame; public JButton btn; public JTextField textField; public JList<String> jList; public DefaultListModel<String> listModel; int index=-1;//list içindeki seçili index public JFrameOrnek() { //Örnek Frame Oluşturma frame = new JFrame(); //Button Oluşturma btn = new JButton("TIKLA"); btn.setBounds(30,30,100,40); frame.add(btn); //TextField Oluşturma textField = new JTextField(); textField.setBounds(150,30,100,40); frame.add(textField); listModel = new DefaultListModel<String>(); listModel.addElement("öğe 1"); listModel.addElement("öğe 2"); listModel.addElement("öğe 3"); listModel.addElement("öğe 4"); jList = new JList<String>(listModel); jList.setBounds(30, 80, 220, 100); frame.add(jList); frame.setTitle("Pencere"); frame.getContentPane().setLayout(null); frame.setVisible(true); frame.setBounds(200,200,400,400); jList.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent evt) { index = (int) jList.getSelectedIndex(); //seçili index if (index >=0) { textField.setText((String)listModel.getElementAt(index)); } } }); btn.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ if (index >=0) listModel.setElementAt(textField.getText(),index); } }); } } |
Ekran çıktısı:











Yorum Yap