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

📄 fan.java

📁 一个风扇的程序,很好用的!
💻 JAVA
字号:
import javax.swing.*;
import java.awt.*;

public class Fan extends JPanel implements Runnable
{
  private Thread control = null;
  private int xCenter, yCenter;
  private int fanRadius, bladeLength;
  private int angle = 100;
  private int direction = 1;
  private int speed = 10;



  private boolean suspended = false;
  
   public Fan()
  {
    control = new Thread(this);
    control.start();
  }

  public synchronized void resume()
  {
    if (suspended)
    {
      suspended = false;
      notify();
    }
  }

  public synchronized void suspend()
  {
    suspended = true;
  }

  public void reverse()
  {
    direction = -direction;
  }

  public void setSpeed(int ms)
  {
    speed = ms;
  }

  public void run()
  {
    while (true)
    {
      repaint();
      try
      {
        Thread.sleep(speed);
        waitForNotificationToResume();
      }
      catch (InterruptedException ex)
      {
      }
    }
  }

 
  private synchronized void waitForNotificationToResume()
    throws InterruptedException
  {
    while (suspended)
      wait();
  }

  public void paintComponent(Graphics g)
  {
    super.paintComponent(g);

   
    fanRadius = (int)(Math.min(getSize().width, getSize().height)*0.9*0.5);
    xCenter = (getSize().width)/2;
    yCenter = (getSize().height)/2;
    bladeLength = (int)(fanRadius*0.9);
    angle = (angle+direction)%360;

   
    g.setColor(Color.blue);
    g.drawOval(xCenter - fanRadius,yCenter - fanRadius,
      2*fanRadius, 2*fanRadius);

   
    drawBlade(g, angle);
	g.setColor(Color.red);
    drawBlade(g, angle+120);
	g.setColor(Color.green);
    drawBlade(g, angle+240);
	g.setColor(Color.yellow);
    

  }

  private void drawBlade(Graphics g, int angle)
  {
    
      g.fillArc(xCenter-bladeLength, yCenter-bladeLength,
      2*bladeLength, 2*bladeLength, angle, 50);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -