2012-10-06 28 views
3

我在做一個testJComboBox程序。一旦我選擇jCombobox的輸出,我會得到我需要的字符串值。但是,它不起作用。從java中的JComboBox獲取字符串值

這裏是我的代碼:

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 

public class TestJCB extends JFrame { 

    private JLabel genderL; 
    private JComboBox genderJCB; 
    private String[] test = {"male", "female"}; 
    private JButton gB; 

    public TestJCB() { 

     setSize(400, 400); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLayout(null); 
     setVisible(true); 

     JPanel frame = new JPanel(); 
     frame.setSize(400, 400); 
     frame.setLocation(0, 0); 
     frame.setLayout(null); 
     frame.setVisible(true); 

     JLabel genderL = new JLabel("Gender"); 
     genderL.setBounds(10, 200, 100, 30); 
     JComboBox genderJCB = new JComboBox(test); 
     genderJCB.setBounds(60, 10, 100, 30); 

     JButton gB = new JButton("Gender"); 
     gB.setBounds(10, 50, 60, 30); 
     aaa a = new aaa(); 
     gB.addActionListener(a); 

     frame.add(genderL); 
     frame.add(genderJCB); 
     frame.add(gB); 
     add(frame); 
    } 

    public class aaa implements ActionListener { 

     public void actionPerformed(ActionEvent sHandler) { 
      if (genderJCB.getSelectedItem().equals("female")) { 
       System.out.print("yes"); 
      } else { 
       System.out.print("no"); 
      } 
     } 
    } 

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

我也試過combo.getEditor().getItem(),但沒有奏效。

+0

歡迎在這個論壇 – mKorbel

+0

沒有做任何手工上漿/定位(又名:零或absoluteLayout)永遠!相反,請使用合適的LayoutManager。 – kleopatra

+0

@kleopatra,使用空佈局不合適嗎?我應該重新編碼我的GUI併爲我的程序使用合適的LayoutManager? – NOOBprogrammer

回答

4

我也嘗試過combo.getEditor()。getItem(),但它沒有工作。

你最重要的問題是,你聲明的變量,從來沒有使用過或initalized

private JComboBox genderJCB; 

因爲內部公共TestJCB(){凌駕於創造

如果你想在 ActionPerformed到listenening
JComboBox genderJCB = new JComboBox(test);// same issue with JLabel too 

,然後將其改爲

genderJCB = new JComboBox(test); 

更好的可閱讀JComboBox tutorial

1

的錯誤是一個NullPointerException異常。它扔在這裏if (genderJCB.getSelectedItem().equals("female")){。發生這種情況是因爲genderJCB爲空。爲什麼是這樣?你沒有在這裏設置JComboBox genderJCB= new JComboBox(test);?不是。您創建了一個新的局部變量,而不是一個字段,因此您從未聲明該字段。

0

這裏是一個解決方案更多鈔票

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 

public class main extends JFrame 
{ 
    private JLabel genderL; 
    private JComboBox genderJCB; 
    private String[] test = { "male", "female" }; 
    private JButton gB; 

    public main() 
    { 

     setSize(400, 400); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLayout(null); 
     setVisible(true); 

     JPanel frame = new JPanel(); 
     frame.setSize(400, 400); 
     frame.setLocation(0, 0); 
     frame.setLayout(null); 
     frame.setVisible(true); 

     JLabel genderL = new JLabel("Gender"); 
     genderL.setBounds(10, 200, 100, 30); 
     JComboBox genderJCB = new JComboBox(test); 
     genderJCB.setBounds(60, 10, 100, 30); 

     JButton gB = new JButton("Gender"); 
     gB.setBounds(10, 50, 60, 30); 
     aaa a = new aaa(genderJCB); 
     gB.addActionListener(a); 

     frame.add(genderL); 
     frame.add(genderJCB); 
     frame.add(gB); 
     add(frame); 

    } 
    public class aaa implements ActionListener 
    { 
     private JComboBox genderJCB; 
     public aaa(JComboBox genderJCB) 
     { 
      this.genderJCB = genderJCB; 
     } 

     public void actionPerformed(ActionEvent sHandler) 
     { 
      if(genderJCB.getSelectedItem().equals("female")) 
      { 
       System.out.print("yes"); 
      } 
      else 
      { 
       System.out.print("no"); 
      } 
     } 
    } 

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

}