我已經添加了一些組件到JPanel
,它被設置爲網格佈局,我將它添加到設置爲邊框佈局的JFrame
。但我想修復面板的大小。當我的窗口最大化時,所有組件的大小都在增加。我想要在窗口的中心的面板,與固定大小即使窗口最大化。框架中面板的固定大小
回答
將GridLayout
作爲單個組件放置到GridBagLayout
而沒有限制 - 它將居中。將帶有GBL的面板添加到BorderLayout
的CENTER
。
參見this example用於上述圖像。
的Nested Layout Example還使用GBL在右側渦旋窗格的下部居中圖像。
對於漂亮的圖片和簡短的解決方案+1。 – brimborium
JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout());
JPanel rootPanel = new JPanel();
frame.getContentPane().add(rootPanel, BorderLayout.CENTER);
rootPanel.setLayout(new GridBagLayout());
JPanel contentPanel = new JPanel();
Dimension dimension = new Dimension(300, 300);
contentPanel.setMaximumSize(dimension);
contentPanel.setMinimumSize(dimension);
contentPanel.setPreferredSize(dimension);
contentPanel.setBackground(Color.YELLOW);
GridBagConstraints g = new GridBagConstraints();
g.gridx = 0;
g.gridy = 0;
g.anchor = GridBagConstraints.CENTER;
rootPanel.add(contentPanel, g);
frame.setVisible(true);
1)使用代碼格式2)這是很少,如果有的話,答案。 -1 –
至少在這種情況下不會起作用。 – brimborium
那麼,你不應該使用BorderLayout的,因爲這正好適合其子組件。如果你仍然想,因爲你需要一些側面板或類似的東西使用BoderLayout上的JFrame( ),你可以將你的JPanel(使用GridLayout)封裝到另一個帶有GridBagLayout或BoxLayout或類似東西的JPanel中,然後將其他JPanel放入JFrame中。
JPanel innerPanel = new JPanel();
innerPanel.setLayout(new GridLayout());
// fill and set your innerPanel
JPanel middlePanel = new JPanel();
middlePanel.setLayout(new GridBagLayout());
middlePanel.add(innerPanel, constraintsThatPlaceItWhereYouWantIt);
JFrame yourFrame = new JFrame();
yourFrame.setLayout(new BorderLayout());
yourFrame.add(middlePanel, BorderLayout.CENTER);
'middlePanel.add(innerPanel,constraintsThatPlaceItWhereYouWantIt);'查看我的答案,爲什麼'constraintsThatPlaceItWhereYouWantIt'對於將組件集中到GBL中是多餘的。它鏈接到示例代碼。 –
你是對的,但由於可讀性的原因,我在添加時仍然總是給出約束。他可能會在安置方面做更多更先進的工作。 – brimborium
'middlePanel.add(innerPanel/*放在中間* /);';) –
- 1. 固定大小的面板
- 2. 使Windows面板大小固定
- 3. HTML5固定大小頁面
- 4. 面板大小不會在帶菜單的框架中展開
- 5. 如何使面板大小固定在modalpopupextender裏面
- 6. 在java中面板比框架大
- 7. 收集固定大小的WCF實體框架
- 8. 調整大小的Tkinter框架固定縱橫比
- 9. 固定大小
- 10. 固定大小的邊框底部
- 11. 兩個面板佈局(第一面板具有固定的大小,第二個有剩餘大小)
- 12. 使用固定大小塊和滾動面板填充垂直面板
- 13. 導航欄下面的框架大小?
- 14. 固定大小框與HTML頁面上的滾動條?
- 15. Applet面板,一個固定大小和動態JTextField
- 16. 固定大小的陣列不固定
- 17. 固定大小柱
- 18. css,固定大小
- 19. 在numpy的固定大小的數組中取出固定大小的約束
- 20. Flexslider的固定大小
- 21. 固定大小的形式
- 22. 固定大小的數組
- 23. 固定大小的按鈕
- 24. FullCalendar的固定列大小
- 25. Tkinter的create_rectangle()固定大小
- 26. 固定大小的頭
- 27. 固定大小的列
- 28. Winforms面板大小
- 29. jquery mobile:固定頁腳,導航面板未調整大小,內容不居中
- 30. SplitContainer中的固定面板高度
*「請幫助我一些編碼」*請幫助自己解決問題和任何努力的跡象。 SO不是代碼生成機器。順便說一句 - 不要使用代碼格式的文本,並檢查預期的後期格式。投票結束。 –
如果你提供了一些代碼,它會更好。例如,我會查看你的代碼,看看你是否在哪裏調用'setPreferredSize'。 –
如果面板包含人類可讀的文本,請不要這樣做!字體指標因平臺而異。 – trashgod