【问题标题】:set layout on top left of the JPanel instead of center在 JPanel 的左上角而不是中心设置布局
【发布时间】:2016-07-12 01:35:00
【问题描述】:

假设我在 JPanel 中有一个 GridLayout,如果我的布局不足以填满整个 JPanel,它会自动将其对齐在 JPanel 的中心,例如:

但我希望我的布局在 JPanel 的左上角对齐,例如:

所以我的组件将从面板的左上角开始,有什么方法可以做到吗?

【问题讨论】:

  • @AhYong 可能你的意思是 GridBagLayout?
  • 你能把 FlowLayout 设置成 JPanel 会根据你的要求自动设置
  • 使用 GridBagLayout。

标签: java swing jpanel


【解决方案1】:

将您的 gridLayoutPanel 添加到另一个面板,即 subPanel。将此子面板布局设置为流布局,如subPanel.setLayout(new FlowLayout(FlowLayout.LEFT))。将主面板的布局设置为 BorderLayout。并将您的 subPanel 面板添加到主面板的NORTH 位置。

示例代码:

JPanel subPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
subPanel.add(gridLayoutPanel);

mainPanel.setLayout(new BorderLayout());
mainPanel.add(subPanel, BorderLayout.NORTH);

【讨论】:

  • 坏主意。 BorderLayout 将提供组件的水平拉伸。 FlowLayout 会更好。
  • 我改变了我的设计。现在在BorderLayout中使用FlowLayout
【解决方案2】:

它会在 JPanel 的中心自动对齐,例如:

听起来您在主面板上使用 GridBagLayout,这是默认行为,除非您使用 GridBagConstraints 来控制此行为。

阅读 Swing 教程中有关如何使用 GridBagLayout 的部分,尤其是有关使用 weightx/y 约束的部分。正确设置这些约束将阻止面板自行居中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多