2016-06-05 8 views
0

ActionListener를 사용하여 JList에서 값을 가져오고 싶습니다. 사용자가 색인을 선택하고 선택한 색인을 업데이트하면 업데이트 된 값을 가져오고 싶습니다.JButton없이 JList에서 값 가져 오기

버튼을 누르지 않고 어떻게 할 수 있습니까? JList에 ActionListener를 추가하고 싶습니다.

답변

2

버튼을 누르지 않고 어떻게 할 수 있습니까? JList에 ActionListener를 추가하고 싶습니다.

아니, 당신은 정말 JList에 더 addActionListener(...) 방법이 없기 때문에 그이 허용되지 않기 때문에하는 JList에 "ActionListener를 추가"하고 싶지 않아,하지만 당신은 하나 리스너 추가해야하고, 할

JList tutorial 또는 JList API을 찾아 보면 쉽게 찾을 수 있습니다. 가장 좋은 옵션은 ListSelectionListener입니다.

유용한 자원 :

:

import javax.swing.*; 
import javax.swing.event.ListSelectionEvent; 
import javax.swing.event.ListSelectionListener; 

@SuppressWarnings("serial") 
public class ListListenerDemo extends JPanel { 
    private static final String[] LIST_DATA = { "Sunday", "Monday", "Tuesday", "Wednesday", 
      "Thursday", "Friday", "Saturday" }; 
    private JList<String> list = new JList<>(LIST_DATA); 

    public ListListenerDemo() { 
     list.setVisibleRowCount(4); 

     // add the ListSelectionListener to our JList 
     list.addListSelectionListener(new MyListListener()); 

     JScrollPane scrollPane = new JScrollPane(list); 
     add(scrollPane); 
    } 

    // here's our ListSelectionListener 
    private class MyListListener implements ListSelectionListener { 
     @Override 
     public void valueChanged(ListSelectionEvent e) { 
      if (!e.getValueIsAdjusting()) { 
       JList<String> lst = (JList<String>) e.getSource(); 
       String selection = lst.getSelectedValue(); 
       if (selection != null) { 
        JOptionPane.showMessageDialog(list, selection, "Selected Item", 
          JOptionPane.INFORMATION_MESSAGE); 
       } 
      } 
     } 
    } 

    private static void createAndShowGui() { 
     ListListenerDemo mainPanel = new ListListenerDemo(); 

     JFrame frame = new JFrame("ListListenerDemo"); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     frame.getContentPane().add(mainPanel); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(() -> createAndShowGui()); 
    } 
}