使用GridLayout - 如何设置JPanel大小?

时间:2015-01-19 23:07:46

标签: java swing layout-manager grid-layout

enter image description here我正在使用GridLayout并且我的所有面板都有相同的尺寸,我该如何更改尺寸呢?

我尝试了所有函数getPreferred / Minimum / MaximumSize这样做,什么也没做。 我仍然希望继续使用GridLayout 有什么建议吗?

2 个答案:

答案 0 :(得分:5)

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

  1. 您可以使用其他布局,例如GridBagLayout或MigLayout或
  2. 使用GridLayout保存相同大小的JPanel,作为其他组件的容器。内部组件当然可以是不同的尺寸。例如:一个国际象棋棋盘,它将棋盘单元格保存在GridLayout中,但允许每个单元格保存一个具有不同大小的棋子。
  3. 如果这不能回答您的问题,请澄清您的问题。

答案 1 :(得分:2)

所以我设法将上面的所有部分拆分到我位于NORTH的第一个JPanel。
然后,JPanel与按钮我做同样位于南。
因此滚动的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);