java - Swing JList 和 DefaultListModel。

标签 java swing jbutton actionlistener jlist

如何获取选定的项目?

我的代码中有一个简单的要求:我需要获取一个选定的项目来实现一个启用 JButtonActionListener

    public class Tela extends JFrame{
    private static final long serialVersionUID = 1L;
    private DefaultListModel<String> model;
    private JList<String> list;

    public Tela(){
        setTitle("Maquina de Refrigerante");
         String labels[] = { "Coca-Cola", "Fanta Laranja", "Fanta-Uva", 
                 "Sprite"};

        //Cria os Paineis no Frame
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
        JPanel leftPanel = new JPanel();
        JPanel rightPanel = new JPanel();
        JPanel downPanel = new JPanel();
        leftPanel.setLayout(new BorderLayout());

        rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS));
        list = new JList<String>(labels);
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        list.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));

        JScrollPane pane = new JScrollPane();
        pane.getViewport().add(list);  
        leftPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
        leftPanel.add(pane);

        final JButton comprar = new JButton("Comprar");
        comprar.setEnabled(false);       
        rightPanel.add(comprar);
        rightPanel.add(Box.createRigidArea(new Dimension(0,4)));
        rightPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20));

        panel.add(leftPanel);
        panel.add(rightPanel);
        panel.add(downPanel);
        add(panel);

        setSize(450, 350);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        comprar.addActionListener(new Paga());
    }


}

我想实现一个 ActionListener 来选择项目,从而启用 jbutton("Comprar"),但我现在没有任何想法去做这件事。

最佳答案

getSelectedIndex()getSelectedIndices()将给出所选项目的索引

除了MadProgrammer的答案之外,最好使用ListSelectionListener监听选择状态改变事件。 JList 负责监听选择模型中的选择状态更改,并将每个更改通知给定监听器。使用方法如下:

jList.addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent evt) {
               selectedValues = jList1.getSelectedValuesList(); 
                        // it will return a list of values
                        //evt.getFirstIndex() - the index of last selected item
                       //evt.getLastIndex() - the index of current selected item
            }
        });  

关于java - Swing JList 和 DefaultListModel。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19391298/

相关文章:

java - Fragment webView无法检测到Google map (您的位置)

java - JTextArea 中的选项卡输出行为

java - Java 中的 Mysql 连接池

java - JFrame 背景图像顶部出现奇怪的白色条纹

Java乘法表GUI,请帮助我前进

java - 添加带有 actionListener 的新 JButton() 而不声明它

java - Java中如何判断一个jar文件的包名

java - 如何设置 ActionListener 来监听另一个 ActionListener 来触发不同类中的事件?

java - JPanel inside JScrollPane 绘画问题

java - 为什么 JButton 不起作用?