gpt4 book ai didi

java - 如何使用标准 Java 布局管理器更正/居中 GridLayout?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:01:24 27 4
gpt4 key购买 nike

下面的代码代表了问题。由于我设置了北面板和南面板的高度,其余部分使用 GridLayout 转到中心面板。我认为,由于它不能在其行之间平均共享剩余像素,所以它只会留下它们。因此在下面的代码中,我们在南面板上有难看的白线。

我的问题是:如何确保当 GridLayout 没有占用整个空间时它至少居中?

通常我会使用 TableLayout 并对情况进行排序,但由于我正在写一个答案,所以我只想使用标准管理器。提前致谢,知道这一点对我非常有用。

例子:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class AligningButonsTest
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
JFrame f = new JFrame();
f.setSize(800, 600);
double CONSTANT_FACTOR = .1;
int noOfRows = 5;
JPanel centerP = new JPanel(new GridLayout(noOfRows,1));

for(int i = 0; i < noOfRows; i++)
{
BoxPanel bP = new BoxPanel();
centerP.add(bP);
}
JPanel contentPane = new JPanel(new BorderLayout());
f.setContentPane(contentPane);
contentPane.add(centerP, BorderLayout.CENTER);
JPanel southP = new JPanel();
southP.setBackground(Color.RED.darker());//southP.setOpaque(false);
southP.setPreferredSize(new Dimension(1, (int)(CONSTANT_FACTOR* f.getHeight())));
contentPane.add(southP, BorderLayout.SOUTH);
JPanel northP = new JPanel();
northP.setBackground(Color.RED.darker());//northP.setOpaque(false);
northP.setPreferredSize(new Dimension(1, (int)(CONSTANT_FACTOR* f.getHeight())));
contentPane.add(northP, BorderLayout.NORTH);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
});
}
}

class BoxPanel extends JPanel
{
public BoxPanel()
{
setBorder(BorderFactory.createMatteBorder(1, 0, 1, 0, Color.RED));
setBackground(Color.DARK_GRAY);
}
}

最佳答案

How to make sure that when the GridLayout is not taking the whole space it is at least centered?

JPanel wrapper = new JPanel( new GridBagLayout() );
wrapper.add( centerP );
contentPane.add(wrapper, BorderLayout.CENTER);
//contentPane.add(centerP, BorderLayout.CENTER);

关于java - 如何使用标准 Java 布局管理器更正/居中 GridLayout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6072956/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com