Java窗口没有设置背景颜色?

时间:2012-02-21 19:08:40

标签: java swing awt

这可能是一个非常愚蠢的错误,但我刚开始学习.awt包。我按照教程写了一封信,在视频中他的窗口背景为红色,我的代码中没有错误但它不会改变背景颜色。 谢谢你的帮助!

import java.awt.Color;
import javax.swing.*;
public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
JFrame f = new JFrame();
f.setVisible(true);
f.setSize(350,350);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setTitle("Window");
f.setBackground(Color.RED);
    }

}

2 个答案:

答案 0 :(得分:10)

1)JFrame无法做到这一点,您必须更改内容窗格的Color,例如

JFrame.getContentPane().setBackground(myColor)

2)您需要将GUI相关代码(main方法)包装到invokeLater

例如:

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

public class GUI {

    public GUI() {
        JFrame frame = new JFrame();
        frame.setTitle("Test Background");
        frame.setLocation(200, 100);
        frame.setSize(600, 400);
        frame.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        frame.getContentPane().setBackground(Color.BLUE);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                GUI gUI = new GUI();
            }
        });
    }
}

答案 1 :(得分:4)

而不是

f.setBackground(Color.RED);

呼叫

f.getContentPane().setBackground(Color.RED);

内容窗格显示的内容。

作为旁注,这是一个JFrame提示:您可以致电f.add(child),孩子将被添加到内容窗格中。

相关问题