私は比較的新しいJavaです。私はJavaプログラムを正しくレイアウトするために過去2つの夜を過ごしました。私は誰かが私のためにいくつかのことをクリアできることを望んでいます。スイングを使用した基本的なアプリケーションのレイアウトが難しい
JMenuBarを使用してアプリケーションにメニューバーを追加するまではレイアウトはすべてうまくいっていましたが、何らかの理由でアプリケーションのメニューバーが消えたり、ファイルメニューの幅バー、または完全に動作しますが、その下のボタンは非表示になります。
私の最近の試しは少し近づいていますが、メニューバーのコンテナをBorderLayoutに設定すると、何らかの理由でメニューバーの高さが大きくなるようです。
誰かが私が間違っているところを正しい方向に向けることができますか?
JPanel mainPane = new JPanel();
BoxLayout progLayout = new BoxLayout(mainPane, BoxLayout.Y_AXIS);
mainPane.setLayout(progLayout);
setContentPane(mainPane);
JMenuBar menuBar = new JMenuBar();
JMenu file = new JMenu("File");
menuBar.add(file);
JMenuItem project = new JMenuItem("New Project");
JMenuItem exit = new JMenuItem("Exit");
file.add(project);
file.add(exit);
JPanel row0 = new JPanel();
BorderLayout menuBarLayout = new BorderLayout();
row0.setLayout(menuBarLayout);
row0.add(menuBar);
add(row0);
JPanel row1 = new JPanel();
row1.setOpaque(false);
row1.add(domainLabel);
row1.add(projectNameInput);
row1.add(userSubmit);
row1.add(userClear);
add(row1);
多くのありがとう。
*編集:私は結局下の答えのおかげでそれを働かせることができました。ソリューションの以下のコメントを参照してください。
通常、私はその 'setJMenuBar(...)'メソッドを介したJFrame自体にJMenuBarのを追加しました。これにより、BorderLayout.NORTH形式でcontentPaneのすぐ上に追加されます。私のJFrameが他の場所に作成されている場合、他のクラスがここで作成したメニューバーを抽出できるように、時に公開の 'getJMenuBar()'メソッドの上にクラスを与えます。 –
まずはこれはとても不適切です:) "File.add(exit);" Java変数では、小文字で始まる必要があります。 LOL私はFileクラスの.add()のような静的メソッドを見たことがないと思っていました。(悪い練習 – doNotCheckMyBlog
@Brogrammerそれを指摘してくれてありがとう。コードの残りの部分からわかるように、あなたが言ったコンベンションでは、大文字を考えずに入力しなければなりません。これは他の人が混乱するのを防ぐために編集されました;) –