【问题标题】:getting values from JList without JButton从没有 JButton 的 JList 中获取值
【发布时间】:2016-10-05 04:54:04
【问题描述】:

我想通过使用 ActionListener 从我的 JList 中获取值。 当用户选择一个索引并更新所选索引时,我想获取更新后的值。

如何在不按按钮的情况下做到这一点?我想将 ActionListener 添加到我的 JList。

【问题讨论】:

    标签: java swing user-interface awt jlist


    【解决方案1】:

    如何在不按按钮的情况下做到这一点?我想将 ActionListener 添加到我的 JList。

    不,您真的不想向 JList “添加 ActionListener”,因为这是不允许的,因为 JList 没有 addActionListener(...) 方法,但您确实需要添加一个 listener ,通过查找JList tutorialJList 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());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-08-05
      • 2017-07-09
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多