2012-10-06 26 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); 
    } 

}