为什么背景是黑色的?

时间:2014-05-05 20:15:39

标签: java graphics

在添加paint方法之前,后台工作正常,我假设paint方法在运行时覆盖了setBackground和setForeground方法,但我不知道如何解决这个问题。

import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.Font;
import java.awt.Graphics;

import javax.swing.JFrame;

public class Afterworld extends JFrame{
    public static void main(String[] args){
        DisplayMode dm = new DisplayMode(800, 600, 16, DisplayMode.REFRESH_RATE_UNKNOWN);
        Afterworld game = new Afterworld();
        game.run(dm);
    }

    public void run(DisplayMode dm){
        setBackground(Color.PINK);
        setForeground(Color.WHITE);
        setFont(new Font("Arial", Font.PLAIN, 24));

        Screen screen = new Screen();
        try{
            screen.setFullScreen(dm, this);
            try{
                Thread.sleep(5000);
            }catch(Exception ex){}
        }finally{
            screen.restoreScreen();
        }
    }

    public void paint(Graphics g){
        g.drawString("test", 200, 200);
    }
}

1 个答案:

答案 0 :(得分:1)

您应该更改paint方法:

public void paint(Graphics g){
    super.paint(g);
    g.drawString("test", 200, 200);
}

super.paint(g);的调用执行超类中的任何代码。这正是在您添加paint方法之前绘制背景的代码。

您可以详细了解如何访问超类'成员http://docs.oracle.com/javase/tutorial/java/IandI/super.html