首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swing JList和DefaultListModel。

Swing JList和DefaultListModel。
EN

Stack Overflow用户
提问于 2013-10-15 21:19:30
回答 2查看 1.3K关注 0票数 1

我怎样才能得到一个选定的项目?

我的代码中有一个简单的需求:我需要获得一个选定的项来实现一个ActionListener,即启用JButton

代码语言:javascript
复制
    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"),但我现在还不知道如何去做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-15 21:22:05

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

除了MadProgrammer's应答之外,最好使用侦听选择状态更改事件的ListSelectionListenerJList负责侦听选择模型中的选择状态更改,并将每个更改通知给定的侦听器。如下所示:

代码语言:javascript
复制
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
            }
        });  
票数 1
EN

Stack Overflow用户

发布于 2013-10-15 21:22:31

可以使用JList#getSelectedValue返回当前选定的项。

查看如何使用按钮如何编写动作侦听器,了解有关将动作侦听器注册到按钮的更多详细信息,以及有关使用JList的详细信息的如何使用列表

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19391298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档