⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hypnosis.java

📁 learning java的源代码。书中每个实例都有相关的代码example。
💻 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 + -