Java 动态太极图 DynamicTaiChi (整理)
package demo; import java.awt.Color;
import java.awt.Graphics; import javax.swing.JFrame;
import javax.swing.JPanel; /**
* Java 动态太极图 DynamicTaiChi (整理)
*
* 2016-1-2 深圳 南山平山村 曾剑锋
*/ public class DynamicTaiChi extends JPanel{
private static final long serialVersionUID = 1L;
/*
* 所有的数据都是按比例依照centerX进行改变的,所以
* 如果想要更改面板大小的话,可以直接改centerX的值.
*/
static int centerX = 600/2;
static int centerY = centerX;
static int cicle = centerX;
static int angle = 0; public DynamicTaiChi() {
start();
}
private void start() {
new Thread(new Runnable() { @Override
public void run() {
while (true) {
try {
angle++;
Thread.sleep(10);
repaint();
} catch (Exception e) {
e.printStackTrace();
}
} }
}).start();
}
@Override
public void paint(Graphics graphics) {
super.paint(graphics);
this.setBackground(Color.red);
graphics.setColor(Color.white);
graphics.fillArc(centerX-cicle/2, centerY-cicle/2, cicle, cicle, angle, 180);
graphics.setColor(Color.black);
graphics.fillArc(centerX-cicle/2, centerY-cicle/2, cicle, cicle, 180+angle, 180);
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);
graphics.setColor(Color.white);
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);
graphics.setColor(Color.black);
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);
graphics.setColor(Color.white);
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);
} public static void main(String[] args) {
JFrame jFrame = new JFrame();
jFrame.setTitle("DynamicTaiChi");
jFrame.setSize(centerX*2, centerY*2);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setLocationRelativeTo(null); DynamicTaiChi jPanel = new DynamicTaiChi();
jFrame.add(jPanel); jFrame.setVisible(true);
}
}

Java 动态太极图 DynamicTaiChi (整理)的更多相关文章
- Java 动态写轮眼 SharinganJPanel (整理)
/** * Java 动态写轮眼 SharingganJPanel (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * 设计声明: * 1.虽然岸本是日本人,而我个人作为其模仿者,依 ...
- Java 动态眨眼 EyesJPanel (整理)
/** * Java 动态眨眼 EyesJPanel (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * 注意事项: * 1.本程序为java程序,同时感谢您花费宝贵的时间来阅读本文档: ...
- Java 动态代理机制分析及扩展
Java 动态代理机制分析及扩展,第 1 部分 王 忠平, 软件工程师, IBM 何 平, 软件工程师, IBM 简介: 本文通过分析 Java 动态代理的机制和特点,解读动态代理类的源代码,并且模拟 ...
- [转]Java 动态代理机制分析及扩展
引言 Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执 ...
- Java笔试面试题整理第四波
转载至:http://blog.csdn.net/shakespeare001/article/details/51274685 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java笔试面试题整理第三波
转载至:http://blog.csdn.net/shakespeare001/article/details/51247785 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java 动态代理机制分析及扩展--转
http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/#icomments http://www.ibm.com/developerworks/c ...
- JAVA动态代理的全面深层理解
Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过 ...
- Java 动态代理机制分析及扩展,第 1 部分
Java 动态代理机制分析及扩展,第 1 部分 http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/ 本文通过分析 Java 动态代理的机制和特 ...
随机推荐
- Tech Stuff - Mobile Browser ID (User-Agent) Strings
Tech Stuff - Mobile Browser ID (User-Agent) Strings The non-mobile stuff is here (hint: you get jerk ...
- ZOJ3231 Apple Transportation(最小费用流)
题目给你一棵苹果树,然后每个结点上有一定的苹果树,你要将苹果运输达到某个状态,使得均方差最小. 将苹果x个从a->b的花费是x*w,w是边权. 当时比赛的时候想的就是,最后达到的状态一定是sum ...
- HDU 3623 Best Cow Line, Gold(模拟,注意思路,简单)
题目 POJ 3617 和 这道题题目一样,只是范围稍稍再小一点. //模拟试试 #include<stdio.h> #include<string.h> #include&l ...
- [读]剑指offer
研二的开始找工作了,首先祝愿他们都能够找到自己满意的工作.看着他们的身影,自问明年自己这个时候是否可以从容面对呢?心虚不已,赶紧从老严那儿讨来一本<剑指offer>.在此顺便将自己做题所想 ...
- Linux下搭建Android NDK , Linux 驱动开发环境
Eclispe Luna(4.4):http://www.eclipse.org/downloads/ CDT :http://www.eclipse.org/cdt/downloads.php AD ...
- STL中set底层实现方式
Q:STL中set底层实现方式? 为什么不用hash? A: 第一个问题:set底层实现方式为RB树(即红黑树). 第二个问题: 首先set,不像map那样是key-value对,它的key与valu ...
- 4 tips for staying productive on Friday
4 tips for staying productive on Friday如何让你的周五和周一一样有效率1.Schedule Your Day with Tasks 用任务计划一天 Sometim ...
- C++语言,统计一篇英文文章中的单词数(用正则表达式实现)
下面的例子展示了如何在C++11中,利用regex_search()统计一篇英文文章中的单词数: #include <iostream> #include <regex> #i ...
- jsp中利用checkbox进行批量删除
一.将前台jsp页面中的所有你要用到checkbox的name值设为相同,如 <input type="checkbox" name="userid"&g ...
- DIV CSS设计时IE6、IE7、FF 与兼容性有关的特性(转载的)
在网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV CSS设计的网,就应该更注意IE6 IE7 FF对CSS样式的兼容,不然,你的网乱可能出去不想出现的效果! 所有浏览器 ...