【发布时间】:2010-03-29 13:21:17
【问题描述】:
我使用myPanel.setLayout(new BoxLayout(myPanel, BoxLayout.Y_AXIS)); 垂直排列面板(一个在另一个下)。但是以所示方式定义的myPanel 更改了包含的面板。更详细地说,它尝试为包含的面板设置相同的高度和宽度。可以改变吗? BoxLayout 可以采用包含元素的大小吗?
添加:
因此,按照建议,让我们阅读文档:
BoxLayout 尝试排列 组件在其首选宽度 (用于水平布局)或高度 (用于垂直布局)。为一个 水平布局,如果不是全部 组件高度相同, BoxLayout 试图使所有 组件高达最高 零件。如果这是不可能的 一个特定的组件,然后是 BoxLayout 垂直对齐该组件, 根据组件的 Y 结盟。默认情况下,组件具有 Y 对齐为 0.5,这意味着 组件的垂直中心 应该具有相同的 Y 坐标 其他的垂直中心 0.5 Y 对齐的组件。
就我而言,我有 Y_AXIS 布局。它是“垂直”布局吗?如果是这种情况,则应将组件布置在其首选高度。什么是“首选高度”?
接下来写的是“对于水平布局,如果不是所有组件的高度相同,BoxLayout 会尝试使所有组件都与最高组件一样高”。所以,我假设垂直布局。 BoxLayout 将尝试使所有组件都像最广泛的组件一样广泛。正确的?那么垂直布局中使用的“首选高度”呢?
还写到,如果水平布局不可能使所有组件都与最高组件一样高,它将垂直对齐组件。 “垂直对齐”是什么意思?水平布局垂直对齐组件是不是很奇怪?
添加 2:
垂直布局的问题在于它使所有元素都像窗口一样宽。因此,包含在 JPanel 中的元素(具有垂直框布局)将无法保持其比例。而这正是我想要避免的。
【问题讨论】:
标签: java user-interface swing layout