【问题标题】:Can Box Layout accept size of included elements?Box Layout 可以接受包含元素的大小吗?
【发布时间】: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


    【解决方案1】:

    请改用GridBagLayout。手动配置很痛苦,但有一些工具可以为您编写约束(最著名的是 NetBeans 的 GUI 构建器)——它使您可以完全控制每个组件的拉伸和定位方式。

    您可以设置对齐方式、填充、插入、边距、可用空间的分布方式、最终边界的计算方式等等。而且,编写循环代码以在行或列中添加具有相似约束的整个组件集合并不难。

    【讨论】:

      【解决方案2】:

      来自Javadoc

      BoxLayout 尝试排列 首选宽度的组件 (用于水平布局)或高度 (垂直布局)。为一个 水平布局,如果不是全部 组件高度相同, BoxLayout 试图使所有 组件高达最高 零件。如果这是不可能的 一个特定的组件,然后是 BoxLayout 垂直对齐该组件, 根据组件的 Y 结盟。默认情况下,组件具有 Y 对齐为 0.5,这意味着 组件的垂直中心 应该具有相同的 Y 坐标 其他的垂直中心 0.5 Y 对齐的组件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-26
        • 2013-01-01
        • 2013-04-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-21
        • 2018-06-17
        相关资源
        最近更新 更多