java swing gui闪烁白色错误
我为一个程序制作了一个Gui,它有一个以JFrame为中心的外部容器,其中包含一个容纳22*12个单元格的内部容器。当我运行这个程序时,背景只会闪烁成白色并保持不变。如果你能指出我错在哪里,那就太棒了
public class Gui extends JFrame
{
private JPanel outer, inner;
private JLabel[][] labels = new JLabel[22][12];
public Gui()
{
setBackground(Color.black);
setSize(1000,1000);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
outer = new JPanel();
outer.setLayout(new BorderLayout());
outer.setSize(620,920);
outer.setBackground(Color.white);
inner = new JPanel();
inner.setLayout(new GridLayout(22,12,10,10));
inner.setSize(600,900);
inner.setBackground(Color.white);
for (int i = 0; i < 22; i++)
{
for (int j = 0; j < 12; j++)
{
labels[i][j] = new JLabel();
JLabel label = labels[i][j];
label.setSize(50,50);
label.setBackground(Color.gray);
inner.add(label);
}
}
outer.add(inner, BorderLayout.CENTER);
add(outer, BorderLayout.CENTER);
}
}
gui在实例化它的主类中设置为可见
gui的创建和大小正确。它以黑色背景开始,然后随机变为白色,并保持不变
编辑:如果这仍然很重要:
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
Gui gui = new Gui();
gui.setVisible(true);
}
});
}
# 1 楼答案
使用遵循最终静态命名约定的新静态变量名。即变量应大写:
不要对组件使用setSize()。而是将组件添加到框架中,然后使用pack()方法,以便以其首选大小显示组件:
布局管理器使用首选尺寸而不是尺寸作为布局提示:
这是你的主要问题。默认情况下,JLabel是透明的,因此您设置的背景色将被忽略:
顺便说一下,我的屏幕高度只有738,所以你不能看到整个画面,因为你想要22*50的高度。您应该意识到这一点,并可能将您的面板添加到JScrollPane中,以便像我这样的人可以实际使用您的应用程序。这就是为什么您不应该硬编码首选尺寸