2012-10-17 178 views
3

我有JComboBox 2列,我有JButton。當我點擊JButton時,我需要分別從第一列和第二列中得到JComboBox選定值的結果...從JComboBox獲取價值

我該怎麼做?

另外:如何設置該JComboBox的標題?

驗證碼:

public class Combo extends JFrame implements ActionListener{ 
    private JComboBox combo = new JComboBox(); 
    private JButton button = new JButton(); 
    public Combo() { 

     setLayout(new FlowLayout()); 
     combo.setRenderer(new render()); 

     add(combo); 

     combo.addItem(new String[] {"1","bbb"}); 
     combo.addItem(new String[] {"2","ff"}); 
     combo.addItem(new String[] {"3","gg"}); 
     combo.addItem(new String[] {"4","ee"}); 

     add(button); 
     button.addActionListener(this); 
     pack(); 
    } 


    public static void main(String[]args){ 
     new Combo().setVisible(true); 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     if(e.getSource()==button){ 
      System.out.println(combo.getSelectedItem()); 
     } 
    } 
} 
class render extends JPanel implements ListCellRenderer{ 

    private JLabel label1 = new JLabel(); 
    private JLabel label2 = new JLabel(); 
    private JLabel label3 = new JLabel(); 
    private JLabel label4 = new JLabel(); 
    private JLabel label5 = new JLabel(); 

    public render() { 
     setLayout(new GridLayout(2,5)); 
     add(label1); 
     add(label2); 
    } 

    @Override 
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 
     String[] values = (String[]) value; 
     label1.setText(values[0]); 
     label2.setText(values[1]); 
     if(index ==0){ 
      label1.setForeground(Color.red); 
      label2.setForeground(Color.red); 
     }else{ 
      label1.setForeground(Color.white); 
      label2.setForeground(Color.white); 
     } 

     return this; 
    } 

} 

感謝。

回答

11

你的項目是字符串數組,這樣你就可以按如下打印所選項目:

System.out.println(Arrays.toString((String[])combo.getSelectedItem())); 

編輯:

String[] selectedItem = (String[])combo.getSelectedItem(); 
for (int i = 0; i < selectedItem.length; i++){ 
    System.out.println(String.format("item %s = %s", i, selectedItem[i])); 
} 

或短,如果你需要的是第一個項目 - (String[])combo.getSelectedItem())[0]

+0

真的非常感謝..它的工作..但如何,如果我只需要第一個值?我需要單獨的值 –

+0

@JasonAmavisca請參閱上次編輯 – tenorsax

+0

我..很多感謝^^ ..但如何設置它的標題?爲很多請求道歉.. –

3

要顯示所選元素的第一個值,你可以使用:

System.out.println(((String[])combo.getSelectedItem())[0]); 
+0

非常感謝,它真的幫助..但我可以設置它的標題? –