zoukankan      html  css  js  c++  java
  • Jave 鼠标点击画太极 PaintTaiji (整理)

      1 package demo;
      2 
      3 /**
      4  *                 Jave 鼠标点击画太极 PaintTaiji (整理)
      5  * 声明:
      6  *     又是一份没有注释的代码,而且时间已经久远了,不过代码很短,解读起来应该
      7  * 不会很麻烦。
      8  *
      9  *                                           2016-1-2 深圳 南山平山村 曾剑锋
     10  */
     11 
     12 import java.awt.Color;
     13 import java.awt.Graphics;
     14 import java.awt.event.MouseEvent;
     15 import java.awt.event.MouseListener;
     16 import java.util.ArrayList;
     17 
     18 import javax.swing.JFrame;
     19 import javax.swing.JPanel;
     20 
     21 public class PaintTaiji extends JPanel{
     22     private static final long serialVersionUID = 1L;
     23     //所有的数据都是依照
     24     static int  centerX = 600/2;
     25     static int centerY = centerX;
     26     ArrayList<Taiji> taijis = new ArrayList<Taiji>();
     27     
     28     
     29     public PaintTaiji() {
     30         startRun();
     31         this.addMouseListener(new MouseListener() {
     32             
     33             @Override
     34             public void mouseReleased(MouseEvent e) {
     35                 // TODO Auto-generated method stub
     36                 
     37             }
     38             
     39             @Override
     40             public void mousePressed(MouseEvent e) {
     41                 int mouseX = e.getX();
     42                 int mouseY = e.getY();
     43                 taijis.add(new Taiji(mouseX, mouseY));
     44             }
     45             
     46             @Override
     47             public void mouseExited(MouseEvent e) {
     48                 // TODO Auto-generated method stub
     49                 
     50             }
     51             
     52             @Override
     53             public void mouseEntered(MouseEvent e) {
     54                 // TODO Auto-generated method stub
     55                 
     56             }
     57             
     58             @Override
     59             public void mouseClicked(MouseEvent e) {
     60             }
     61         });
     62     }
     63     @Override
     64     public void paint(Graphics graphics) {
     65         super.paint(graphics);
     66         this.setBackground(Color.red);
     67         for (Taiji taiji : taijis) {
     68             taiji.paint(graphics);
     69         }
     70     }
     71     
     72     public static void main(String[] args) {
     73         JFrame jFrame = new JFrame();
     74         //设置JFrame标题
     75         jFrame.setTitle("TaiJi");
     76         //设置JFrame的大小
     77         jFrame.setSize(centerX*2, centerY*2);
     78         jFrame.setLocationRelativeTo(null);
     79         jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     80         
     81         PaintTaiji taiji = new PaintTaiji();
     82         jFrame.add(taiji);
     83 
     84         //将窗口设置为可见
     85         jFrame.setVisible(true);
     86     }
     87     public void startRun() {
     88         new Thread(){
     89             public void run() {
     90                 while(true){
     91                    try{
     92                            for (Taiji taiji : taijis) {
     93                            taiji.angle += taiji.angleStep;
     94                            }
     95                         Thread.sleep(20);
     96                     } catch (InterruptedException e) {
     97                         e.printStackTrace();
     98                     }
     99                     repaint();
    100                 }
    101             };
    102         }.start();
    103     }
    104 }
    105 class Taiji{
    106     int centerX;
    107     int centerY;
    108     int extendCircleSemi = (int)(Math.random()*200)+1;
    109     int innerCircleSemi = extendCircleSemi/2;
    110     //旋转角度,值由线程维护,大约每20ms自加1
    111     int angle = 0;
    112     int angleStep = (int)(Math.random()*6)+1;
    113     public Taiji(int x, int y) {
    114         centerX = x;
    115         centerY = y;
    116     }
    117     
    118     public void paint(Graphics graphics ) {
    119         graphics.setColor(    Color.white);
    120         graphics.fillArc(    centerX-extendCircleSemi,
    121                             centerY-extendCircleSemi,
    122                             extendCircleSemi*2,
    123                             extendCircleSemi*2, 0+angle, 180);
    124         graphics.setColor(    Color.black);
    125         graphics.fillArc(    centerX-extendCircleSemi,
    126                             centerY-extendCircleSemi,
    127                             extendCircleSemi*2,
    128                             extendCircleSemi*2,
    129                             180+angle, 180);
    130         graphics.fillArc(    centerX+(int)(Math.cos(Math.PI*angle/180)*innerCircleSemi)-innerCircleSemi,
    131                             centerY-(int)(Math.sin(Math.PI*angle/180)*innerCircleSemi)-innerCircleSemi,
    132                             innerCircleSemi*2,
    133                             innerCircleSemi*2,
    134                             0,
    135                             360);
    136         graphics.setColor(    Color.white);
    137         graphics.fillArc(    centerX+(int)(Math.cos(Math.PI*angle/180)*innerCircleSemi)-innerCircleSemi/2,
    138                             centerY-(int)(Math.sin(Math.PI*angle/180)*innerCircleSemi)-innerCircleSemi/2,
    139                             innerCircleSemi,
    140                             innerCircleSemi,
    141                             0,
    142                             360);
    143         graphics.setColor(    Color.white);
    144         graphics.fillArc(    centerX-(int)(Math.cos(Math.PI*angle/180)*innerCircleSemi)-innerCircleSemi,
    145                             centerY+(int)(Math.sin(Math.PI*angle/180)*innerCircleSemi)-innerCircleSemi,
    146                             innerCircleSemi*2,
    147                             innerCircleSemi*2,
    148                             0,
    149                             360);
    150         graphics.setColor(    Color.black);
    151         graphics.fillArc(    centerX-(int)(Math.cos(Math.PI*angle/180)*innerCircleSemi)-innerCircleSemi/2,
    152                             centerY+(int)(Math.sin(Math.PI*angle/180)*innerCircleSemi)-innerCircleSemi/2,
    153                             innerCircleSemi,
    154                             innerCircleSemi,
    155                             0,
    156                             360);
    157     }
    158 }

     效果如图:

      

      

  • 相关阅读:
    滴滴打车如何成就150亿估值
    互联网专车高补贴开始“退烧”
    城市拥堵加剧,都是互联网快车惹的祸?
    滴滴打车动态加价10-20余元
    专车降价滴滴快车使命终结?
    “专车”监管意见最快本月公布
    专车新规或下周发布,估计有大量司机流失
    滴滴优步神州掀新一轮融资大战
    杭州或率先放开非公司化专车
    恭喜您!获得20元现金红包一个,赶快领取!
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/5094868.html
Copyright © 2011-2022 走看看