Java gui工作不正常

Java gui工作不正常,java,swing,netbeans,Java,Swing,Netbeans,我有下面的代码来设置gui,使用JComboBox从用户输入源语言和目标语言,但在运行它时,除了显示按钮外,什么都没有,请给出一些建议。我在构造函数中完成了初始化和所有其他工作 import java.io.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.awt.event.ActionEvent; import java.aw

我有下面的代码来设置gui,使用JComboBox从用户输入源语言和目标语言,但在运行它时,除了显示按钮外,什么都没有,请给出一些建议。我在构造函数中完成了初始化和所有其他工作

import java.io.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Insets;
import java.io.FileNotFoundException;

public class SrcAndTargLangInput implements ActionListener {
    public static JFrame frame;
    public static JComboBox sourcLang;
    public static JComboBox targLang;
    public static JLabel setSrcLang;
    public static JLabel setTargLang;
    public static JButton ok;
    String[] lang = new String[2];

    public SrcAndTargLangInput() {
        ok = new JButton("Ok");
        ok.setBounds(150, 400, 100, 50);
        frame = new JFrame();
        frame.getContentPane().setLayout(null);
        frame.getContentPane().add(ok);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        Insets ins = frame.getInsets();
        frame.setSize(400 + ins.left + ins.right, 500 + ins.bottom + ins.top);
        setSrcLang = new JLabel("Source Language");
        setSrcLang.setBounds(50, 100, 100, 40);
        setTargLang = new JLabel("Target Language");
        setTargLang.setBounds(50, 200, 100, 40);
        String[] srcLangList = { "English", "Spanish", "French" };
        sourcLang = new JComboBox(srcLangList);
        sourcLang.setBounds(250, 100, 100, 40);
        String[] targLangList = { "English", "Spanish", "French" };
        targLang = new JComboBox(targLangList);
        targLang.setBounds(250, 200, 100, 40);
        frame.setVisible(true);
        ok.addActionListener(this);
    }

    public static void main(String args[]) {
        new SrcAndTargLangInput();
    }

    public void actionPerformed(ActionEvent e) {
        lang[0] = (sourcLang.getSelectedItem().toString());
        lang[1] = (targLang.getSelectedItem().toString());
        frame.setVisible(false);
    }
}

你有没有先仔细检查你的代码?您已将
JButton
添加到框架的内容窗格中,但尚未添加
JComboBox
。也不需要调用
frame.setVisible(true)两次;在向框架添加元素后,只需调用它

最后,您不应该在外部运行Swing GUI代码,否则以后可能会遇到线程问题。将主要方法更改为:

public static void main(String args[]) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new SrcAndTargLangInput();
        }
    }
}

更不用说公共和静态修改器过度使用综合症了!1+