paint(Graphics g)に依存しないで強制描画する方法
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Toolkit; import java.awt.image.BufferedImage; import javax.swing.JPanel; public class Screen extends JPanel implements Runnable{ /** * */ private static final long serialVersionUID = 1L; private final static int WIDTH = 400; private final static int HEIGHT = 400; private Thread thread = null; private int count; private Graphics g; private BufferedImage backImage = null; public Screen() { setPreferredSize(new Dimension(WIDTH, HEIGHT)); } public void make() { backImage = (BufferedImage)createImage(WIDTH, HEIGHT); g = backImage.getGraphics(); count = 0; thread = new Thread(this); thread.start(); } public void run() { while (true) { count++; g.setColor(Color.BLACK); g.fillRect(0, 0, WIDTH, HEIGHT); g.setColor(Color.WHITE); g.drawString(count+"", count%WIDTH, count%HEIGHT); // ここで強制描画 { Graphics g = getGraphics(); g.drawImage(backImage, 0, 0, null); Toolkit.getDefaultToolkit().sync(); g.dispose(); } System.out.println(count); try { Thread.sleep(20); } catch (Exception e) { // TODO: handle exception } } } }
過去の日記に同じコード書いてあったわ