GUI布局建议?

4

我想在底部创建一个新的JList和一个新的JPanel,但我对BoxLayoutFlowLayout等不太熟悉。您有什么建议,以便我可以使我的GUI变成这样:

我用画图绘制了这个,请原谅我的画技

请原谅我的绘画水平,感谢能提供帮助的任何人! :)

编辑:这是什么作用? JPanel.setLayout(new BoxLayout(JPanel,BoxLayout.PAGE_AXIS));


我对BoxLayout、FlowLayout等不太熟悉。你有什么建议让我把GUI做成这样吗?学习BoxLayout、FlowLayout和类似的布局方式。尝试使用一个好的Swing WSYWIG编辑器,比如NetbeanseclipseWindowBuilder可能会有所帮助。 - Nivas
1
“但我对BoxLayout、FlowLayout等布局管理器不太熟悉。”——除了提问,自己尝试实验是学习如何使用布局管理器的唯一途径。很少情况下你只使用一个布局管理器。也许可以从BorderLayout作为主要布局管理器开始。然后为左/右创建使用不同布局管理器的子面板。发布SSCCE以展示你尝试过的内容,也许我们可以提供帮助。 - camickr
我进行了实验,但布局仍然很糟糕。 - alicedimarco
2个回答

3
使用MigLayout。它非常易于使用,学习曲线很小。它可以轻松处理您想要的布局。具体来说,请从Quick Start Guide开始,然后查看Whitepaper以获取其余API。
需要注意的是MigLayout中的停靠元素(右侧和底部)和fill,因为看起来您也希望物品占据整个空间。
除此之外,您可能不需要更多的内容来指定布局。
例如,在Griffon框架中使用MigLayout和SwingBuilder,以下是我如何布置您所拥有的内容:
migLayout(layoutConstraints: 'fill, wrap 2', 
    columnConstraints: '[grow|]', 
    rowConstraints: '[grow|]')

panel (constraints: 'spany 2, grow') { 
    // Main content with the picture go in here 
}
list(constraints: 'grow') { 
    // Top list 
}
list(constraints: 'grow') { 
    // Bottom list 
}

panel(constraints: 'grow') { 
    // Bottom panel 
}
panel() { 
    // Button panel 
}

可能有更好的方法来做这件事,而且我自己也没有整理布局并运行它,所以我不确定它是否百分之百有效,但它应该作为一个很好的起点。


我大致浏览了一下PDF,这看起来相当不错且易于理解 :) 谢谢! - alicedimarco

-1

你可以使用GridBagLayout或者使用带有BorderLayout的嵌套面板。你需要有一些JPanel容器来定义布局,然后在它们上面添加功能组件。

对于你的例子,我会从中心(Panel A)开始一个面板和一个东边的面板(Panel B)。然后为面板B使用BoxLayout,并添加JList、JButton、JLabel和Jlists,以及删除标签按钮。

对于面板A,在南边(Panel C)、中心(Panel D)和东边(Panel E)再添加另一个容器面板。在Panel E上使用boxlayout添加新的两个列表,在Panel C上添加图片。

希望能帮到你。


永远不要使用GridBagLayout。目前最先进的布局是MigLayout、JGoodies Forms Layout和DesignGridLayout。 - Andres Almiray
猜想我应该跟上时代了 :) - Slash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接