2013-10-15 56 views
1

我如何獲得選定的項目?Swing JList和DefaultListModel。

我在我的代碼中有一個簡單的要求:我需要得到一個選定的項目來實現ActionListener這是啓用JButton

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"),但我沒有在這個時候任何的想法去做。

回答

1

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 
      } 
     }); 
+0

由於它的工作原理註冊一個動作監聽你的按鈕和How to use lists的詳細信息! –

+0

@韋斯利,很高興聽到這個消息。但是要小心,'ListSelectionListener'會在一個項目的選擇丟失時被觸發兩次,而另一個項目的選擇增益 – Sage