在添加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);
}
}
最佳答案
您应该将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上了解有关访问超类成员的更多信息。