2012-02-11 6 views
0

実行ファイルを選択してコードをテストすると、GUIアプリケーションのメニューバーが一貫して表示されません。私はNetBeans IDEバージョン7.0.1を使用しています。私は、コード内の任意の場所を選択し、マウスを右クリックし、結果のメニューからファイルを実行を選択することによって、コードをテストしています。結果のGUIアプリケーションにはメニューバーがありますが、アプリケーションを再実行するとメニューバーは表示されませんが、再実行するとメニューバーが表示されます。 おそらく、プログラムを実行するときに同じ問題が発生しているかどうかをテストできますか?私はプログラムを実行する前にパージする必要がある何らかの残存メモリがあるのでしょうか?実行ファイルでテストしたときにNetBeans 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); 
    } 
} 
+0

' main.setSize(600、600)に最後のコード行でなければなりません。代わりに、すべてのGUI要素が追加され、 'setVisible(true)'が呼び出される前に 'pack()'を呼び出します。 –

答えて

2

コールsetVisible(true)フレームを構築する:ここでは、コードです。

他の状況で行う可能性のある、表示可能なフォームにレイアウト/コントロールを追加する場合は、フレーム/パネルでrevalidate()に電話する必要があります。 `それをしないでください。

+0

これはうまくいった。私は、メインメソッドのコードの最後にパネルを再検証した後、元の問題を複製することができませんでした。私は問題が解決したと考えます。ありがとう。 – ForgottenKahz

+0

問題が解決したと考えるなら、あなたはその答えを受け入れることになっています。スタックオーバーフローへようこそ。 – Bill

1

コード行main.setVisible(true);main method

関連する問題