java - 边框布局无法按预期工作

标签 java swing layout netbeans jpanel

我想实现下面的布局。

enter image description here

有 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);

我得到的:

enter image description here

最佳答案

lefsideToolBarPaneldescriptionPanel 添加到具有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);

image

The width of the propertiesPanel and height of the tablePanel need to be increased. I used setSize()

对于 propertiesPanel,您可以覆盖 getPreferredSize(),如讨论的那样 here .对于 tablePanel,覆盖 getPreferredScrollableViewportSize() 以自定义表格的封闭 JScrollPane 的大小,对于 example .

关于java - 边框布局无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36809759/

相关文章:

java - Mybatis 查询插入 java 对象列表失败

java - 如何使用 Spring Boot 配置 logback-access.xml

Java JTextArea 多行帮助

java - 面板切换在我的测验应用程序中不起作用。我正在使用卡片布局

java - 将相同的组件添加到多个面板?

android - 创建可滚动的图像按钮的 android 布局?

java - JFrame Action 监听器

java - 如何设置JGoodies Look and Feel?

java - 从 jtable 中删除突出显示的列和数据

android - 没有足够的空间来展示广告 (AdMob)