Mercurial > hg > ristipolku
view Ristipolku.java @ 0:f930f72ed0f5
Initial import.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 26 Jan 2011 03:43:17 +0200 |
parents | |
children | 44f1e7b47fcf |
line wrap: on
line source
/* * Ristipolku * (C) Copyright 2011 Matti 'ccr' Hämäläinen <ccr@tnsp.org> * * Ohjelmointiprojekti Java-kurssille. * */ import java.awt.*; import java.awt.geom.*; import java.awt.font.TextLayout; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.awt.event.WindowAdapter; import java.awt.image.BufferedImage; import javax.swing.*; public class RistiPolku extends JApplet implements Runnable { public Graphics2D createGraphics2D(Dimension d) { Graphics2D g2 = null; if (bimg == null || bimg.getWidth() != d.w || bimg.getHeight() != d.h) { bimg = (BufferedImage) createImage(d.w, d.h); reset(d); } g2 = bimg.createGraphics(); g2.setBackground(getBackground()); g2.clearRect(0, 0, w, h); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); return g2; } public void paint(Graphics g) { Dimension d = getSize(); step(d.width, d.height); Graphics2D g2 = createGraphics2D(d); drawDemo(d.width, d.height, g2); g2.dispose(); g.drawImage(bimg, 0, 0, this); } public void start() { thread = new Thread(this); thread.setPriority(Thread.MIN_PRIORITY); thread.start(); } public synchronized void stop() { thread = null; } public void run() { Thread me = Thread.currentThread(); while (thread == me) { repaint(); try { thread.sleep(10); } catch (InterruptedException e) { break; } } thread = null; } public static void main(String argv[]) { final RistiPolku demo = new RistiPolku(); demo.init(); JFrame f = new JFrame("RistiPolku"); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} public void windowDeiconified(WindowEvent e) { demo.start(); } public void windowIconified(WindowEvent e) { demo.stop(); } }); f.getContentPane().add("Center", demo); f.pack(); f.setSize(new Dimension(400,300)); f.show(); demo.start(); } }