Java 动态太极图 DynamicTaiChi (整理)
2016-01-02 15:35
375 查看
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中的简单工厂模式
- Java 炫舞按键功能 DancingPlay (整理)
- Eclipse/MyEclipse字体走样
- Spring 学习笔记 3. 尚硅谷_佟刚_Spring_配置 Bean
- Java 图片转换为字符图 CharMaps (整理)
- 16.怎样自学Struts2之Struts2异常处理[视频]
- 【jvm】java垃圾回收
- java中String类比较常用的方法
- Java Cardioid 心脏形曲线 (整理)
- 24点游戏--java打开方式
- 考试系统(简单版)-----大二上java课程设计
- 下载最新版本Maven 3.3.9 ,检测安装是否成功时发现Java版本JDK却低于1.7时报错
- JDK版本问题
- Java语言中的线程状态转换
- spring AOP 统一异常日志管理
- Java JSON 的使用
- Spring高级事务管理难点剖析
- java-成员方法/变量、类方法/变量等区别
- java从控制台输入
- java参数传递