gpt4 book ai didi

java - 如何在 GridBagLayout 内设置组件的大小

转载 作者:行者123 更新时间:2023-11-30 03:32:47 24 4
gpt4 key购买 nike

正如我所读到的,调整 GridLayout 和 GrigBagLayout 内的组件大小确实很难。就我而言,我有一个 2 列和 2 行的 GridBagLayout。第一行有 2 个标签,第二行有 2 个扩展 JTable 的组件(类型 Tablero)。

我的问题是,我无法让这 2 个 JTable 填充 JFrame 直到其底部。我尝试过 setSize()、setPreferredSize()、setBounds()...但它们根本不起作用。我也尝试通过 constraints.fill = GridBagConstraints.VERTICAL/SOUTH/CENTER 来做到这一点...但我绝对什么也没得到。我也尝试过在 JFrame 内设置 JPanel 的大小,但它不起作用...

这是我的代码:

public static void main(String[] args)
{

JFrame pantalla = new JFrame();

pantalla.getContentPane().setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();

JLabel tab1Label = new JLabel("Tablero 1");
JLabel tab2Label = new JLabel("Tablero 2");

Tablero tablero1 = new Tablero();
Tablero tablero2 = new Tablero();
tablero1.setPreferredSize(new Dimension(400,400));
tablero1.setBounds(0, 0, 400, 400);

tablero1.setBorder(new LineBorder(Color.gray, 2));

constraints.gridx = 0;
constraints.gridy = 0;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.insets = new Insets(0, 0, 20, 0);
pantalla.getContentPane().add(tab1Label, constraints);

constraints.gridx = 1;
constraints.gridy = 0;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.insets = new Insets(0, 0, 20, 0);
pantalla.getContentPane().add(tab2Label, constraints);

constraints.insets = new Insets(0, 0, 0, 0);

constraints.fill = GridBagConstraints.VERTICAL;
constraints.gridx = 0;
constraints.gridy = 1;
constraints.gridwidth = 1;
constraints.gridheight = 1;
pantalla.getContentPane().add(tablero1, constraints);

constraints.fill = GridBagConstraints.VERTICAL;
constraints.gridx = 1;
constraints.gridy = 1;
constraints.gridwidth = 1;
constraints.gridheight = 1;
pantalla.getContentPane().add(tablero2, constraints);

pantalla.pack();
pantalla.setSize(800, 400);
pantalla.setVisible(true);
pantalla.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}

结果如下:

enter image description here

我知道还有其他更简单的方法,但使用 GridBagLayout 实际上是一个要求。

最佳答案

尝试将 constraints.weightx = 1;constraints.weighty = 1; 添加到您的 JTables 约束中。

同时删除这些行:

tablero1.setPreferredSize(new Dimension(400,400));
tablero1.setBounds(0, 0, 400, 400);

关于java - 如何在 GridBagLayout 内设置组件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28635448/

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