有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java不使用JButton从JList获取值

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

我怎么能不按一个按钮呢?我想将ActionListener添加到我的JList中


共 (1) 个答案

  1. # 1 楼答案

    How can i do it without pressing a button? I want to add ActionListener to my JList.

    不,您真的不想向JList“添加ActionListener”,因为这是不允许的,因为JList没有addActionListener(...)方法,但您确实需要添加一个侦听器,通过查找JList tutorialJList API可以很容易地找到哪一个。在那里你会找到你最好的选择,a 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());
        }
    }