?? hypnosis.java
字號:
//file: Hypnosis.javaimport java.awt.*;import java.awt.event.*;import java.awt.geom.GeneralPath;import javax.swing.*;public class Hypnosis extends JComponent implements Runnable { private int[] coordinates; private int[] deltas; private Paint paint; public Hypnosis(int numberOfSegments) { int numberOfCoordinates = numberOfSegments * 4 + 2; coordinates = new int[numberOfCoordinates]; deltas = new int[numberOfCoordinates]; for (int i = 0 ; i < numberOfCoordinates; i++) { coordinates[i] = (int)(Math.random( ) * 300); deltas[i] = (int)(Math.random( ) * 4 + 3); if (deltas[i] > 4) deltas[i] = -(deltas[i] - 3); } paint = new GradientPaint(0, 0, Color.blue, 20, 10, Color.red, true); Thread t = new Thread(this); t.start( ); } public void run( ) { try { while (true) { timeStep( ); repaint( ); Thread.sleep(1000 / 24); } } catch (InterruptedException ie) {} } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D)g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Shape s = createShape( ); g2.setPaint(paint); g2.fill(s); g2.setPaint(Color.white); g2.draw(s); } private void timeStep( ) { Dimension d = getSize( ); if (d.width == 0 || d.height == 0) return; for (int i = 0; i < coordinates.length; i++) { coordinates[i] += deltas[i]; int limit = (i % 2 == 0) ? d.width : d.height; if (coordinates[i] < 0) { coordinates[i] = 0; deltas[i] = -deltas[i]; } else if (coordinates[i] > limit) { coordinates[i] = limit - 1; deltas[i] = -deltas[i]; } } } private Shape createShape( ) { GeneralPath path = new GeneralPath( ); path.moveTo(coordinates[0], coordinates[1]); for (int i = 2; i < coordinates.length; i += 4) path.quadTo(coordinates[i], coordinates[i + 1], coordinates[i + 2], coordinates[i + 3]); path.closePath( ); return path; } public static void main(String[] args) { JFrame f = new JFrame("Hypnosis"); f.addWindowListener(new WindowAdapter( ) { public void windowClosing(WindowEvent we) { System.exit(0); } }); Container c = f.getContentPane( ); c.setLayout(new BorderLayout( )); c.add(new Hypnosis(4)); f.setSize(300, 300); f.setLocation(100, 100); f.setVisible(true); }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -