我想实现下面的布局。
有 6 个面板。顶部的4个按钮是一个面板,图像右侧的3个按钮也是一个面板。除了这两个之外,还有 4 个其他面板,如边界所示。我尝试了下面的代码,但以分散的方式显示了所有内容。
mainPanel.add(topToolBarPanel,BorderLayout.PAGE_START);
mainPanel.add(lefsideToolBarPanel,BorderLayout.LINE_START);
mainPanel.add(descriptionPanel,BorderLayout.LEFT);
mainPanel.add(mapPanel,BorderLayout.CENTER);
mainPanel.add(propertiesPanel,BorderLayout.EAST);
mainPanel.add(tablePanel,BorderLayout.PAGE_END);
如何实现如图所示的设计?我需要将所有面板都安排在该 mainPanel 内。虽然我不能使用空布局。请指教。
在 trashgod 的回答之后:
JPanel gridPanel = new JPanel(new GridLayout(1, 0));
gridPanel.add(jInternalFrame1);
gridPanel.add(descriptionPanel);
mainPanel.add(gridPanel, BorderLayout.LINE_START);
mainPanel.add(topToolBarPanel,BorderLayout.PAGE_START);
mainPanel.add(tablePanel,BorderLayout.PAGE_END);
mainPanel.add(mapPanel,BorderLayout.CENTER);
mainPanel.add(PropertiesPanel,BorderLayout.LINE_END);
我得到的:
最佳答案
将lefsideToolBarPanel
和descriptionPanel
添加到具有GridLayout
的面板;将新面板添加到 BorderLayout
。
Panel p new Panel(new GridLayout(1, 0));
p.add(lefsideToolBarPanel);
p.add(descriptionPanel);
//mainPanel.add(lefsideToolBarPanel, BorderLayout.LINE_START);
//mainPanel.add(descriptionPanel, BorderLayout.LEFT);
mainPanel.add(p, BorderLayout.LINE_START);
没有 BorderLayout.LEFT
。另见 A Visual Guide to Layout Managers .
附录:您更新的问题显示了 topToolBarPanel
的元素,这些元素应该添加到 PAGE_START
,而不是 LINE_START
。
//mainPanel.add(topToolBarPanel,BorderLayout.LINE_START);
mainPanel.add(topToolBarPanel,BorderLayout. PAGE_START);
The width of the
propertiesPanel
and height of thetablePanel
need to be increased. I usedsetSize()
…
对于 propertiesPanel
,您可以覆盖 getPreferredSize()
,如讨论的那样 here .对于 tablePanel
,覆盖 getPreferredScrollableViewportSize()
以自定义表格的封闭 JScrollPane
的大小,对于 example .
关于java - 边框布局无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36809759/