【问题标题】:Using GridLayout - how to set JPanel size?使用 GridLayout - 如何设置 JPanel 大小?
【发布时间】:2015-01-19 23:07:46
【问题描述】:

我正在使用GridLayout,而我所有的面板都具有相同的尺寸,我该如何更改它们的尺寸?

我尝试了所有实现该功能的 getPreferred/Minimum/MaximumSize,但没有。 我仍然想留在 GridLayout 有什么建议吗?

【问题讨论】:

  • 您是否试图使您的 GridLayout 持有的组件的大小彼此不同? GridLayout 不允许这样做。请澄清你的问题。请显示代码和/或图像。
  • GridLayout 不是最佳选择,但请记住,组件通过 getPreferred/Minimum/MaximumSize 向布局管理器 API 提供大小提示
  • here
  • @Dando18:我知道那个链接——这就是我的答案。 :)
  • @HovercraftFullOfEels 让 OP 看到。顺便说一下名字。

标签: java swing layout-manager grid-layout


【解决方案1】:

就其本质而言,GridLayout 拥有的所有组件都将具有相同的大小。如果您希望它们具有不同的尺寸,

  1. 您可以使用不同的布局,例如 GridBagLayout 或 MigLayout 或
  2. 使用 GridLayout 来保存相同大小的 JPanel,这些 JPanel 充当其他组件的容器。内部组件当然可以是不同的尺寸。例如:一个棋盘,它在 GridLayout 中保存其棋子单元,但允许每个单元保存一个大小不同的棋子。

如果这不能回答您的问题,请澄清您的问题。

【讨论】:

  • @RoeyGolzarpoor 这个答案仍然适用。除非您使用多层布局管理器,否则所有单元格的大小都将相同,然后您可以调整单元格内组件的大小
【解决方案2】:

所以我设法将上面的所有部分拆分到位于 NORTH 的第一个 JPanel。
然后,带有按钮的 JPanel 我做了同样的操作,位于 SOUTH。
所以滚动的 JLabel 现在位于 CENTER 中,这让他可以灵活使用。

    JPanel mainPanel1 = new JPanel(new GridLayout(6,1));
    mainPanel1.add(titleLabel);
    mainPanel1.add(participantPanel);
    mainPanel1.add(swimPanel);
    mainPanel1.add(ridePanel);
    mainPanel1.add(runPanel);
    mainPanel1.add(categoriesPanel);

    JPanel mainPanel2 = new JPanel(new GridLayout(1,1));        
    mainPanel2.add(listPanel);

    JPanel mainPanel3 = new JPanel(new GridLayout(1,1));
    mainPanel3.add(buttonsPanel);

    this.getContentPane().add(mainPanel1, BorderLayout.NORTH);
    this.getContentPane().add(mainPanel2, BorderLayout.CENTER);
    this.getContentPane().add(mainPanel3, BorderLayout.SOUTH);

【讨论】:

    猜你喜欢
    • 2012-07-24
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2014-10-03
    相关资源
    最近更新 更多