使用 GridLayout - 如何设置 JPanel 大小?
Using GridLayout - how to set JPanel size?
我正在使用 GridLayout
并且我的所有面板都具有相同的尺寸,我该如何更改它们的尺寸?
我尝试了所有 getPreferred/Minimum/MaximumSize 的功能,但没有。
我仍然想留在 GridLayout
有什么建议吗?
就其本质而言,GridLayout 拥有的所有组件都将具有相同的大小。如果您希望它们的尺寸不同,
- 您可以使用不同的布局,例如 GridBagLayout 或 MigLayout 或
- 使用 GridLayout 来容纳相同大小的 JPanel,这些 JPanel 充当其他组件的容器。内部组件当然可以有不同的尺寸。例如:在 GridLayout 中放置棋子单元格的棋盘,但允许每个单元格放置大小不同的棋子。
如果这不能回答您的问题,请澄清您的问题。
所以我设法将上面的所有部分拆分到我位于 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);
GridLayout
并且我的所有面板都具有相同的尺寸,我该如何更改它们的尺寸?
我尝试了所有 getPreferred/Minimum/MaximumSize 的功能,但没有。 我仍然想留在 GridLayout 有什么建议吗?
就其本质而言,GridLayout 拥有的所有组件都将具有相同的大小。如果您希望它们的尺寸不同,
- 您可以使用不同的布局,例如 GridBagLayout 或 MigLayout 或
- 使用 GridLayout 来容纳相同大小的 JPanel,这些 JPanel 充当其他组件的容器。内部组件当然可以有不同的尺寸。例如:在 GridLayout 中放置棋子单元格的棋盘,但允许每个单元格放置大小不同的棋子。
如果这不能回答您的问题,请澄清您的问题。
所以我设法将上面的所有部分拆分到我位于 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);