Дизайн GUI NetBeans не работает, когда я тестирую с файлом запуска - PullRequest
0 голосов
/ 11 февраля 2012

Когда я выбираю файл запуска для проверки моего кода, строка меню приложения с графическим интерфейсом не отображается постоянно.Я использую IDE NetBeans версии 7.0.1.Я тестирую код, выбирая его в любом месте, щелкая правой кнопкой мыши и выбирая «Запустить файл» в появившемся меню.Получающееся приложение 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);
    }
}

Ответы [ 2 ]

2 голосов
/ 11 февраля 2012

Позвоните setVisible(true) после построения кадра.

Если вы добавляете макет / элементы управления в видимую форму, что может потребоваться в других ситуациях, вам нужно вызвать revalidate() на фрейме / панели.

1 голос
/ 11 февраля 2012

Строка кода main.setVisible(true); должна быть последней строкой кода в main method

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...