Java 当我使用运行文件进行测试时,NetBeans GUI设计不一致

Java 当我使用运行文件进行测试时,NetBeans GUI设计不一致,java,swing,user-interface,netbeans,Java,Swing,User Interface,Netbeans,当我选择运行文件来测试我的代码时,GUI应用程序的菜单栏不会一直出现。我正在使用NetBeans IDE 7.0.1版。我通过选择代码中的任意位置,右键单击鼠标并从结果菜单中选择RunFile来测试代码。生成的GUI应用程序具有菜单栏,但当我重新运行应用程序时,菜单栏不在那里,但当我重新运行它时,菜单栏出现。 也许您可以在运行程序时进行测试,看看是否存在相同的问题?在运行程序之前,是否有一些剩余内存需要清除?代码如下: public static void main(String[] args)

当我选择运行文件来测试我的代码时,GUI应用程序的菜单栏不会一直出现。我正在使用NetBeans IDE 7.0.1版。我通过选择代码中的任意位置,右键单击鼠标并从结果菜单中选择RunFile来测试代码。生成的GUI应用程序具有菜单栏,但当我重新运行应用程序时,菜单栏不在那里,但当我重新运行它时,菜单栏出现。 也许您可以在运行程序时进行测试,看看是否存在相同的问题?在运行程序之前,是否有一些剩余内存需要清除?代码如下:

public static void main(String[] args) {
    JFrame main = new JFrame("Main");
    main.setVisible(true);
    main.setSize(600, 600);
    main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel(new GridBagLayout());
    GridBagConstraints contraints = new GridBagConstraints();
    main.getContentPane().add(panel, BorderLayout.NORTH);
    contraints.gridx = 0;
    contraints.gridy = 0;
    contraints.insets = new Insets(0,0,0,0);

    //Adding labels and buttons
    JLabel enterUserName = new JLabel("Enter User Name:");
    contraints.gridx = 0;
    contraints.gridy = 1;
    contraints.insets = new Insets(1, 1, 1, 1);
    panel.add(enterUserName, contraints);
    JLabel enterPassWord = new JLabel("Enter Password:");
    contraints.gridx = 0;
    contraints.gridy = 2;
    contraints.insets = new Insets(1, 1, 1, 1);
    panel.add(enterPassWord, contraints);
    JButton logInButton = new JButton("Login");
    contraints.gridx = 0;
    contraints.gridy = 3;
    contraints.insets = new Insets(1, 1, 1, 1);
    panel.add(logInButton, contraints);
    logInButton.addActionListener(new helpAbout());


    //Adding menu bar and menubar items
    JMenuBar menuBar = new JMenuBar();
    main.setJMenuBar(menuBar);
    contraints.gridx = 0;
    contraints.gridy = 0;
    contraints.insets = new Insets(0, 0, 0, 0);
    JMenu file = new JMenu("File");
    menuBar.add(file, contraints);
    JMenu help = new JMenu("Help");
    menuBar.add(help, contraints);

    //Adding menu bar functionality
    JMenuItem exit = new JMenuItem("Exit");
    file.add(exit);
    exit.addActionListener(new fileExit());
    JMenuItem about = new JMenuItem("About");
    help.add(about);
    about.addActionListener(new helpAbout());
}

static class helpAbout implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        JFrame test = new JFrame("About");
        test.setVisible(true);
        test.setSize(200, 200);
        JLabel label2 = new JLabel("About");
        JPanel panel2 = new JPanel();
        test.add(panel2);
        panel2.add(label2);
    }
}

static class fileExit implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        System.exit(0);
    }
}
在构建框架后调用
setVisible(true)

如果将布局/控件添加到可见窗体(在其他情况下可能需要这样做),则需要在框架/面板上调用
revalidate()

在构建框架后调用
setVisible(true)


如果向可见窗体添加布局/控件(在其他情况下可能需要这样做),则需要在框架/面板上调用
revalidate()

代码行
main.setVisible(true)
必须是
main方法的最后一个代码行
代码行
main.setVisible(true)
必须是
main方法的最后一行代码

main.setSize(600600)不要这样做。而是在添加所有GUI元素之后,在调用
setVisible(true)
之前调用
pack()
main.setSize(600600)不要这样做。而是在添加所有GUI元素之后,在调用
setVisible(true)
之前调用
pack()
。这非常有效。在main方法的代码末尾重新验证面板之后,我无法复制原始问题。我认为这个问题已经解决了。谢谢。如果你认为这个问题解决了,那么你应该接受这个答案。欢迎使用Stack Overflow。这非常有效。在main方法的代码末尾重新验证面板之后,我无法复制原始问题。我认为这个问题已经解决了。谢谢。如果你认为这个问题解决了,那么你应该接受这个答案。欢迎来到堆栈溢出。