zoukankan      html  css  js  c++  java
  • Java 动态太极图 DynamicTaiChi (整理)

     1 package demo;
     2 
     3 import java.awt.Color;
     4 import java.awt.Graphics;
     5 
     6 import javax.swing.JFrame;
     7 import javax.swing.JPanel;
     8 
     9 /**
    10  *                   Java 动态太极图 DynamicTaiChi (整理)
    11  *
    12  *                                          2016-1-2 深圳 南山平山村 曾剑锋
    13  */
    14 
    15 public class DynamicTaiChi extends JPanel{
    16     private static final long serialVersionUID = 1L;
    17     /*
    18      *           所有的数据都是按比例依照centerX进行改变的,所以
    19      * 如果想要更改面板大小的话,可以直接改centerX的值.
    20      */
    21     static int centerX = 600/2;
    22     static int centerY = centerX;
    23     static int cicle = centerX;
    24     static int angle = 0;
    25     
    26     public DynamicTaiChi() {
    27         start();
    28     }
    29     private void start() {
    30         new Thread(new Runnable() {
    31             
    32             @Override
    33             public void run() {
    34                 while (true) {
    35                     try {
    36                         angle++;
    37                         Thread.sleep(10);
    38                         repaint();
    39                     } catch (Exception e) {
    40                         e.printStackTrace();
    41                     }
    42                 }
    43                 
    44             }
    45         }).start();
    46     }
    47     @Override
    48     public void paint(Graphics graphics) {
    49         super.paint(graphics);
    50         this.setBackground(Color.red);
    51         graphics.setColor(Color.white);
    52         graphics.fillArc(centerX-cicle/2, centerY-cicle/2, cicle, cicle, angle, 180);
    53         graphics.setColor(Color.black);
    54         graphics.fillArc(centerX-cicle/2, centerY-cicle/2, cicle, cicle, 180+angle, 180);
    55         graphics.fillArc(centerX+(int)(cicle/2/2*(Math.cos(angle*Math.PI/180)))-cicle/2/2, centerY-(int)(cicle/2/2*(Math.sin(angle*Math.PI/180)))-cicle/2/2, cicle/2, cicle/2, 0, 360);
    56         graphics.setColor(Color.white);
    57         graphics.fillArc(centerX+(int)(cicle/2/2*(Math.cos((angle+180)*Math.PI/180)))-cicle/2/2, centerY-(int)(cicle/2/2*(Math.sin((angle+180)*Math.PI/180)))-cicle/2/2, cicle/2, cicle/2, 0, 360);
    58         graphics.setColor(Color.black);
    59         graphics.fillArc(centerX+(int)(cicle/2/2*(Math.cos((angle+180)*Math.PI/180)))-cicle/2/2/2, centerY-(int)(cicle/2/2*(Math.sin((angle+180)*Math.PI/180)))-cicle/2/2/2, cicle/2/2, cicle/2/2, 0, 360);
    60         graphics.setColor(Color.white);
    61         graphics.fillArc(centerX+(int)(cicle/2/2*(Math.cos(angle*Math.PI/180)))-cicle/2/2/2, centerY-(int)(cicle/2/2*(Math.sin(angle*Math.PI/180)))-cicle/2/2/2, cicle/2/2, cicle/2/2, 0, 360);
    62     }
    63     
    64     public static void main(String[] args) {
    65         JFrame jFrame = new JFrame();
    66         jFrame.setTitle("DynamicTaiChi");
    67         jFrame.setSize(centerX*2, centerY*2);
    68         jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    69         jFrame.setLocationRelativeTo(null);
    70         
    71         DynamicTaiChi jPanel = new DynamicTaiChi();
    72         jFrame.add(jPanel);
    73         
    74         jFrame.setVisible(true);
    75     }
    76 }

  • 相关阅读:
    Error -26631: HTTP Status-Code=400 (Bad Request) for
    mysql中的制表符替换
    mysql中json数据的拼接方式
    使用Nightwatch.js做基于浏览器的web应用自动测试
    Selenium + Nightwatch 自动化测试环境搭建
    Python web 框架:web.py
    转 Python Selenium设计模式-POM
    自动化测试
    日志打印longging模块(控制台和文件同时输出)
    读取配置文件(configparser,.ini文件)
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/5094781.html
Copyright © 2011-2022 走看看