2016-06-05 1 views
0

Я хочу получить значение из своего JList с помощью ActionListener. Когда пользователь выбирает индекс и обновленный индекс, я хочу получить обновленное значение.получение значений из JList без JButton

Как я могу это сделать без нажатия кнопки? Я хочу добавить ActionListener в свой JList.

ответ

2

Как я могу это сделать без нажатия кнопки? Я хочу добавить ActionListener в свой JList.

Нет, вы действительно не хотите, чтобы «добавить ActionListener» в JList, так что не допускается, так как JList не имеет addActionListener(...) метод, но вы должны добавить слушатель, и который один легко найти, просмотрев 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()); 
    } 
} 
Смежные вопросы