gpt4 book ai didi

java - 要在 GridLayout 中调整大小的 JLabel

转载 作者:行者123 更新时间:2023-11-30 06:26:35 26 4
gpt4 key购买 nike

我有一个非常简单的 Java 程序(见下文)。 GridLayout 有 20 行和 4 列。如您所知,元素应该按 (GridLayout) 定义水平添加。但是,我将两个元素(标签)垂直放置在另一个之上。

我给它们上色并意识到标签占据了整行,因此产生了垂直效果。但是后来我也对每个使用了 setSize(5,5) 来使它们变小,但是它们仍然占据了整行。关于为什么会发生这种情况以及如何修复/设置更小的尺寸等有什么建议吗?

public class Sam extends JFrame {

public JButton btn_arr;
public Container c;
public JLabel[] lbl = new JLabel[20];


public Sam()
{
c = getContentPane();
c.setLayout(new GridLayout(20,4));
lbl[1] = new JLabel("Column1");
c.add(lbl[1]);

lbl[2] = new JLabel("Column2");
c.add(lbl[2]);

show();
}

public static void main(String[] args)
{
Sam x = new Sam();
x.setVisible(true);
x.setSize(7500,4500);
}

}

最佳答案

您只是将两个组件添加到网格中,以便它们填满它。您需要向网格添加更多组件作为占位符,以便它可以将原始 JLabel 放置在适当的位置,可能是空的 JLabel 或 JPanel。

顺便说一句,您应该避免设置任何 Swing 组件的大小。你现在的尺码7500,4500有点偏大了。

另外,也许您想在这里使用 JTable。

编辑:如果您想要一个具有 4 列和可变行数的 GridLayout,请使用 0 作为您的 GridLayout 行常量:

c.setLayout(new GridLayout(0, 4));

例如,

import java.awt.*;
import javax.swing.*;

public class Sam extends JFrame {
public static final int COLUMN_COUNT = 4;

public JButton btn_arr;
public Container c;
public JLabel[] lbl = new JLabel[COLUMN_COUNT];

public Sam() {
c = getContentPane();
c.setLayout(new GridLayout(0, COLUMN_COUNT));

for (int i = 0; i < lbl.length; i++) {
lbl[i] = new JLabel("Column " + (i + 1));
c.add(lbl[i]);
}

}

public static void main(String[] args) {
Sam x = new Sam();
x.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
x.pack();
x.setLocationRelativeTo(null);
x.setVisible(true);
// x.setSize(7500,4500);
}

}

但我仍然想知道 JTable 在这里是否工作得更好。

关于java - 要在 GridLayout 中调整大小的 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14091812/

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