最佳摇摆';java中的布局解决方案

最佳摇摆';java中的布局解决方案,java,swing,layout,Java,Swing,Layout,我正在尝试复制一个邮件客户端,比如osx lion的客户端。 所以我必须做一些类似的事情: 我不知道布局的最佳解决方案是什么。。有人能给我一些建议吗?谢谢 总的来说,对于该屏幕截图,您所追求的可能是水平框布局(从左到右布局组件以填充空间) 不过,您可能需要在其中嵌套其他布局,就像您在大多数大小合理的UI中所做的那样。解决方案是使用大量不同的布局和组件,彼此嵌套,直到您构建了所需的总体布局。通常,您会对每个嵌套区域使用JPanel,对可调整大小的窗口区域可能使用JSplitPane 您可能会发现

我正在尝试复制一个邮件客户端,比如osx lion的客户端。 所以我必须做一些类似的事情:


我不知道布局的最佳解决方案是什么。。有人能给我一些建议吗?谢谢

总的来说,对于该屏幕截图,您所追求的可能是水平框布局(从左到右布局组件以填充空间)


不过,您可能需要在其中嵌套其他布局,就像您在大多数大小合理的UI中所做的那样。

解决方案是使用大量不同的布局和组件,彼此嵌套,直到您构建了所需的总体布局。通常,您会对每个嵌套区域使用JPanel,对可调整大小的窗口区域可能使用JSplitPane

您可能会发现需要为特定功能编写(或在第三方库中查找)大量自定义组件

大概,您可以使用和组合完成大部分邮件客户端布局。但您可能还需要考虑,这是一个非常灵活的通用布局管理器。 如果你还没有这么做,你应该做


p.S.是快速原型化的一个很好的工具,但对于像这样更复杂的GUI设计,我认为您最终会更好地手工编写它们

这是您使用JSplitPane的目的。如果您不希望用户能够调整左侧和右侧之间的划分大小,您可以使用BorderLayout,左侧的工作方式如下:

panel = new JPanel( new BorderLayout() );
panel.add( new LeftPanel(), BorderLayout.WEST );
panel.add( new CentralPanel(), BorderLayout.CENTER );
这样,左面板将根据其首选宽度调整大小,中心将被赋予剩余的宽度和高度,因此它将随着用户增大和缩小窗口而调整自身大小,但左面板将固定宽度,并在高度上增大和缩小

如果您只是想知道通用布局,那么TableLayout是目前为止最简单的还是最灵活的。没有多少布局问题是无法用它来解决的,而且它很容易理解(与SpringLayout、GroupedLayout等相反),代码也比GridBagLayout少得多,而且更健壮


但对于您描述的问题,我认为您不必使用它。

我尝试了grouplayout,但效果不太好。这个问题太模糊了…@ControlAltDel我知道。。但我使用的是windowsbuilder,我认为它并没有包含所有的布局。。几年前,如果你对基础不确定,我使用了anchor布局(jigloo),然后手动编写代码,直到您了解各种布局以及它们的作用-从长远来看,这将使您的生活更加轻松。使用水平框布局,您可以用鼠标调整每个列的大小吗?@user1190704这不是布局的真正用途-也许您要的是JSplitPane?谢谢你的回答:)JSplitPane是我需要分开的内容。是否可以以jsplitpane的宽度给出初始化维度?(例如:为左侧组件提供屏幕大小的30%作为宽度)。您应该能够使用JSplitPane.setDividerLocation(…)