Java 动态太极图 DynamicTaiChi (整理)

简介: 1 package demo; 2 3 import java.awt.Color; 4 import java.awt.Graphics; 5 6 import javax.
 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 }

目录
相关文章
|
安全 Java API
JDK 11中的动态类文件常量:探索Java字节码的灵活性与动态性
在JDK 11中,Java语言引入了一个新的特性,允许在运行时动态地修改类文件常量。这一特性为Java开发者提供了更大的灵活性,使他们能够根据需要在运行时更改类文件中的常量值。本文将深入探讨动态类文件常量的工作原理、优点、限制以及在实际项目中的应用。
325 11
java实现动态验证码源代码——绘制验证码的jsp
java实现动态验证码源代码——绘制验证码的jsp
|
前端开发 Java
java实现动态验证码源代码——jsp页面
java实现动态验证码源代码——jsp页面
|
运维 监控 算法
java实现一个动态监控系统,监控接口请求超时的趋势
java实现一个动态监控系统,监控接口请求超时的趋势
612 2
|
Java
【专栏】Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性
【4月更文挑战第27天】本文探讨了Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性。反射通过Class、Constructor、Method和Field类实现。文中列举了反射的应用场景,如动态创建对象、调用方法、访问属性和处理注解,并提供了相关实例代码演示。
275 4
|
Java
Java动态获取某个接口下所有的实现类对象集合
Java动态获取某个接口下所有的实现类对象集合
648 1
|
安全 Java 数据安全/隐私保护
Java一分钟之-Java反射机制:动态操作类与对象
【5月更文挑战第12天】本文介绍了Java反射机制的基本用法,包括获取Class对象、创建对象、访问字段和调用方法。同时,讨论了常见的问题和易错点,如忽略访问权限检查、未捕获异常以及性能损耗,并提供了相应的避免策略。理解反射的工作原理和合理使用有助于提升代码灵活性,但需注意其带来的安全风险和性能影响。
162 4
|
存储 Java
Java动态转发代理IP的实现方法
Java动态转发代理IP的实现方法
589 11
Java中的动态类加载详解
Java中的动态类加载详解
|
安全 Java
打破常规!JAVA反射技术让你“动态”编程
【7月更文挑战第1天】Java反射技术是动态编程的利器,它揭示了类的内部信息,允许运行时操作对象、调用方法和创建实例。动态加载类、调用方法和创建对象是其常见应用场景,但需注意反射带来的性能损失、安全风险和代码可读性下降。在平衡灵活性与效率时谨慎使用。
141 0