簡體   English   中英

搖擺gui閃爍白色錯誤

[英]swing gui flickering white error

我正在為一個程序制作一個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);
        }
    });
}

使用遵循最終靜態命名約定的新靜態變量名稱。 那就是變量應該大寫:

//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中,以便像我這樣的人可以實際使用您的應用程序。 這就是為什么您不應該硬編碼首選大小的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM