程式如下,有兩個問題:
1)public void paint(Graphics g) 會被反復執行,如果按程式中這么寫,是不是有很多Font物件被生成,然后很快又被拋棄?
2)還有一個全域物件private Font theFont = new Font(null, Font.PLAIN, 19),如果在paint方法中使用這個物件,是否可以避免反復生成Font物件的浪費?
import java.awt.*;
public class test extends Frame {
private Image offScreenImage = null;
private Font theFont = new Font(null, Font.PLAIN, 19);
public static void main(String[] args) {
test ttt = new test();
ttt.launchFrame();
}
public void launchFrame() {
this.setLocation(400, 10);
this.setSize(400, 400);
this.setBackground(Color.lightGray);
this.setVisible(true);
new Thread(new PaintThread()).start();
}
@Override
public void paint(Graphics g) {
g.setFont(new Font(null, Font.PLAIN, 19));
}
@Override
public void update(Graphics g) {
if (offScreenImage == null) {
offScreenImage = this.createImage(900, 800);
}
Graphics g_offScreen = offScreenImage.getGraphics();
Color c = g_offScreen.getColor();
g_offScreen.setColor(Color.lightGray);
g_offScreen.fillRect(0, 0, 820, 800);
g_offScreen.setColor(c);
paint(g_offScreen);
g.drawImage(offScreenImage, 0, 0, null);
}
private class PaintThread implements Runnable {
@Override
public void run() {
while (true) {
repaint();
try {
Thread.sleep(15);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/268239.html
標籤:Java SE
上一篇:安河橋北-留言板
