swing gui闪烁的白色错误

Posted

技术标签:

【中文标题】swing gui闪烁的白色错误【英文标题】:swing gui flickering white error 【发布时间】:2013-05-08 23:32:49 【问题描述】:

我正在为一个程序制作一个 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);
        
    );

【问题讨论】:

我认为您在构造函数中忘记了setVisible(true)。试试这个。 发布您的 main() 方法,以便我们执行您的代码。 【参考方案1】:

使用遵循最终静态命名约定的新静态变量名称。那就是变量应该是大写的:

//setBackground(Color.black);
setBackground(Color.BLACK);

不要对组件使用 setSize()。而是将组件添加到框架中,然后使用 pack() 方法,以便组件以其首选大小显示:

//setSize(1000,1000);
add(component1);
add(anotherComponent);
pack();

布局管理器使用首选大小而不是大小作为布局提示:

//label.setSize(50,50);
label.setPreferredSize(new Dimension(50, 50));

这是您的主要问题。 JLabel 默认是透明的,所以你设置的背景颜色会被忽略:

label.setBackground(Color.gray);
label.setOpaque(true);

顺便说一句,我的屏幕高度只有 738,所以因为您想要 22*50 的高度,所以事件将无法看到您的整个画面。您应该意识到这一点,并可能将您的面板添加到 JScrollPane 中,以便像我这样的人可以实际使用您的应用程序。这就是为什么您不应该硬编码首选尺寸的原因。

【讨论】:

干得好。很扎实的分析。我非常感谢!现在效果很好!

以上是关于swing gui闪烁的白色错误的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 上启动屏幕后 React Native 白色闪烁:官方解决方案不起作用,抛出错误(为啥??)

GIF ImageIcon 在 Java Swing 中不断闪烁

Swing:在表格中闪烁特定单元格的计算效率最高的方法

使用 SKAction colorizeWithColor 使 SKSpriteNode 闪烁白色

加载前启动画面白色闪烁(React Native Expo)

OSX 上 Safari 6 中的 CSS3 闪烁(但这不是闪烁到白色的问题!)