Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中从JComboBox获取字符串值_Java_Swing_Debugging_Jcombobox - Fatal编程技术网

在java中从JComboBox获取字符串值

在java中从JComboBox获取字符串值,java,swing,debugging,jcombobox,Java,Swing,Debugging,Jcombobox,我正在做一个testJComboBox程序。一旦我选择了jCombobox的输出,我就会得到我需要的字符串值。但是,它不起作用 这是我的代码: import java.awt.*; import javax.swing.*; import java.awt.event.*; public class TestJCB extends JFrame { private JLabel genderL; private JComboBox genderJCB; private

我正在做一个testJComboBox程序。一旦我选择了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()
,但没有成功

我还尝试了combo.getEditor().getItem(),但没有成功

您最重要的问题是,您声明了从未使用或初始化过的变量

private JComboBox genderJCB;
因为在public
TestJCB()中{
重写并创建了

JComboBox genderJCB = new JComboBox(test);// same issue with JLabel too
如果您想在
ActionPerformed
中列出,请将其更改为

genderJCB = new JComboBox(test);

最好是读取错误是一个NullPointerException。如果(genderJCB.getSelectedItem().equals(“女性”){,它会在这里抛出
。发生这种情况是因为genderJCB为null。这是为什么?您没有在这里设置它
JComboBox genderJCB=new JComboBox(test)不。您创建了一个新的局部变量,而不是一个字段,因此您从未声明该字段。

这里有一个可行的解决方案

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

}

永远不要进行任何手动大小调整/定位(又称:null或absoluteLayout)!而是使用合适的LayoutManager。@kleopatra,使用null布局是否不合适?我是否应该重新编码gui并为我的程序使用合适的LayoutManager?