JFrame背景颜色不会改变

时间:2014-03-15 17:24:18

标签: java swing colors background jframe

我在这里查看了许多答案并相应地更改了我的代码,但它仍然无法正常工作。有人可以帮我解决一下吗?

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

public class LoginGUI extends JFrame {



    LoginGUI() { 

        Container c = getContentPane();
        c.setBackground(Color.BLACK);
        JPanel p = new JPanel();
        JLabel title = new JLabel("HTML Generator");
        title.setForeground(Color.black);
        p.add(title);
        c.add(p);
        title.setOpaque(true);

        setSize(400, 400);
        setVisible(true);
    }

    public static void main(String[] args) { 
        new LoginGUI();
    }

}

1 个答案:

答案 0 :(得分:2)

默认情况下,

JPanel的opaque属性为true,JFrame默认布局为BorderLayout。只向框架中添加一个组件(JPanel),会将其拉伸到框架的整个大小,这就是BorderLayout将执行的操作。因此,覆盖整个框架的不透明面板可以解释您获得的结果。

三个简单的修复。将JPanel opaque属性设置为false,或者仅在JPanel上设置背景,或将框架的布局设置为GridBagLayoutFlowLayout