我對Java比較陌生,我花了過去兩個晚上試圖讓我的Java程序正確鋪設,我希望有人可以爲我清除一些東西。使用Swing佈局我的基本應用程序的困難
佈局一切都很順利,直到我決定使用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(...)'方法添加的JMenuBar到JFrame本身。這將以BorderLayout.NORTH方式將其添加到contentPane之上。如果我的JFrame是在其他地方創建的,我有時會將類放在公共'getJMenuBar()'方法之上,以允許其他類提取此處創建的菜單欄。 –
首先,這是不合適的:)「File.add(exit);」在java變量中應該以小寫字母開頭並且任何其他的字由駱駝大小寫聯合。大聲笑我以爲我從來沒有見過靜態方法如.add()在文件類...... :(不好的做法 – doNotCheckMyBlog
@編程器感謝您指出了這一點。您可以告訴其餘的代碼,我確實遵循命名你提到的約定,我必須在不考慮它的情況下輸入大寫字母,現在已經被編輯以阻止其他人感到困惑; –