1

JMenuBar を GUI に表示しようとしていますが、上部に 1 ピクセルの線として表示されます。

これは私のコードです...

public LibraryView() {
    setBounds(100,100,640,480);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new BorderLayout());

    JMenuBar b1 = new JMenuBar();
    JMenu m1 = new JMenu("Test");
    JMenuItem i1 = new JMenuItem("Item1");

    this.setJMenuBar(b1);
}

誰かが何が間違っているのか理解するのを手伝ってくれませんか。

4

3 に答える 3

5

JMenuJMenuItemをに追加する必要がありJMenuBarます。また、メソッドpack()setVisible(true);最後で、GUI が表示される直前に...

public LibraryView() {
    setBounds(100,100,640,480);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new BorderLayout());

    JMenuBar b1 = new JMenuBar();
    JMenu m1 = new JMenu("Test");
    JMenuItem i1 = new JMenuItem("Item1");

    m1.add(i1); // ADDED
    b1.add(m1); // ADDED

    this.setJMenuBar(b1);

    pack(); // ADDED
    setVisible(true); // MOVED
}
于 2012-05-27T03:54:09.353 に答える
3

すべてのコンポーネントを最上位ウィンドウに追加した後にsetVisible(true)のみ呼び出す必要があります。また、レイアウト マネージャーを使用して、これらのマネージャーとコンポーネントの preferredSize でコンポーネントのサイズを設定できるようにすることを忘れないでください。また、 を呼び出すことも忘れないでください。pack()

于 2012-05-27T03:54:19.860 に答える
0

set visible(true) を呼び出す直前に repaint() を呼び出します。これは決して失敗しません。

 setJMenuBar(menuBar);
 menuBar.add(jMenuItem);
 repaint(); //then
 setVisible(true); //Assured NEVER FAILS
于 2016-04-06T17:43:43.133 に答える