//第一个java文件thread_star.java:

package solarsystem;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;

import javax.swing.JPanel;

class thread_star extends Thread
{
int x0;
int y0;
int r0;
int d0;
double angle;
thread_star(int x,int y,int r,double a)
{
x0=x;
y0=y;
r0=r;
d0=x0-960;
angle=a;
}
public void run()
{double an=angle/3;
while(true)
{
x0=(int) (960+d0*Math.cos(angle));
y0=(int) (540+d0*Math.sin(angle));

angle=angle+an/10;
try {
sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class draw_star extends JPanel
{
thread_star s[]={new thread_star(1300,540,30,(Math.PI/20)),new thread_star(1700,540,40,(Math.PI/40))
,new thread_star(1400,540,25,(Math.PI/30)),new thread_star(1620,540,30,(Math.PI/36)),
new thread_star(1180,540,18,(Math.PI/10))
};
draw_star()
{
for(int i=0;i<s.length;i++)s[i].start();
this.setBackground(Color.black);
}
public void paint(Graphics g)
{
g.setColor(Color.black);
g.fillRect(0, 0, getWidth(), getHeight());
//this.setBackground(Color.BLACK);
super.paint(g);

}
public void paintComponent(Graphics g0)
{
this.setBackground(Color.black);
Graphics2D g=(Graphics2D)(g0);
g.setColor(Color.yellow);
g.fill(new Ellipse2D.Double(960-80,540-80,160,160));
Color c[]={Color.blue,Color.GRAY,Color.orange,Color.RED,Color.red};
for(int i=0;i<s.length;i++)
{
g=(Graphics2D)(g0);
g.setColor(c[i]);
g.fill(new Ellipse2D.Double(s[i].x0-s[i].r0,s[i].y0-s[i].r0,2*s[i].r0,2*s[i].r0));
}
repaint();
}

}

//第二个java文件J_Frame.java:

package solarsystem;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;

import javax.swing.JFrame;

public class J_Frame extends JFrame
{
J_Frame()
{
super("太阳星系图");
draw_star d=new draw_star();
Container c=getContentPane();
c.setBackground(Color.BLACK);
c.add(d);
this.setBackground(Color.black);
}
public static void main(String args[])
{

J_Frame j=new J_Frame();
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
j.setSize(1920, 1080);
j.setVisible(true);
}
}

运行结果图示:

JAVA图形小动画之简单行星运动的更多相关文章

  1. Rebound动画框架简单介绍

    Rebound动画框架简单介绍 Android菜鸟一枚,有不对的地方希望大家指出,谢谢. 最近在接手了一个老项目,发现里面动画框架用的是facebook中的Rebound框架,由于以前没听说过,放假时 ...

  2. Java 图形界面开发--图文并茂建立学生管理系统

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/50932501 冷血之心的博客) 图形用户界面(Graphics U ...

  3. Java图形用户界面编程

    1.Java图形用户界面编程概述 JavaAPI中提供了两套组件用于支持编写图形用户界面:AWT(抽象窗口包)和Swing 2.  容器(Container):重量级容器和轻量级容器(一个容器可以放置 ...

  4. java中Color类的简单总结

    java中Color类的简单总结 1.颜色的常识 任何颜色都是由三原色组成(RGB),JAVA中支持224为彩色,即红绿蓝分量取值 介于0-255之间(8位表示) 2.Color类中的常量 publi ...

  5. 安装linux下面用来配置网络,防火墙,系统服务等设置的图形小工具Setup

    Setup命令是linux下面用来配置网络,防火墙,系统服务等设置的图形小工具.使用起来非常方便简单,可是centos\redhat最小化安装之后发现setup命令工具用不了. 接下来介绍如何安装se ...

  6. 【Android】第21章 2D图形和动画

    分类:C#.Android.VS2015: 创建日期:2016-03-19 一.简介 Android系统定义了一系列独立的图形处理类,其中,2D图形处理类分别位于以下命名空间: Android.Gra ...

  7. 【转】java图形界面设计(AWT)

    [转自]http://blog.sina.com.cn/s/blog_616e189f0100ne1t.html 1.       基本的java Frame操作. Java的图形界面的类主要包括AW ...

  8. 使用SpannableString实现一个load小动画

    依然是github开源项目:WaitingDots 这个项目代码不多,实现的非常easy.可是非常有意思由于动画的基本元素不是画出来的,而是使用了spannableString来实现. DotsTex ...

  9. java图形界面设计

    1.       基本的java Frame操作. Java的图形界面的类主要包括AWT和Swing.在AWT中图形元素的父类为Component. 继承关系如下:Component->Cont ...

随机推荐

  1. 高深的dp POJ 2229Sumsets

    对于这个问题, 我们显然可以看出来, 当他是奇数的时候, 直接等于他的前一个偶数 dp [ i ] = dp [ i - 1] ; 那么问题, 当它是偶数的时候, 我们应该怎么进行 dp 记忆化搜索并 ...

  2. Photon Server 实现注册与登录(三) --- 前端UI设计和发起请求

    一.打开之前的测试项目.先将服务端代码编译一下,在 bin/Debug/目录下会发现有一个Common.dill.我们相应导入到前端使用.直接拖拽到相应地方 UI相应布局属于前端操作,这里就不做介绍了 ...

  3. 封装PHP增删改查方法

    <?php class sqlModel{ public $db; public function __construct(){ try{ $dbms='mysql';//数据库类型 $dbNa ...

  4. MySQL8.0哪些新特性你最期待

    1.数据字典全部采用InnoDB引擎存储,支持DDL原子性.crash safe,metadata管理更完善 2.快速在线加新列(腾讯互娱DBA团队贡献) 3.并行redo log,并提升redo l ...

  5. 使用Golang时遇到的一些坑

    1. [致命]不是所有Panic都能捕获 我们知道Golang给开发人员提供recover()机制,对堆栈异常(panic)进行捕获并自定义其处理逻辑.下面举个例子: 构造一个除0的异常场景: 输出结 ...

  6. Java多线程(十):BlockingQueue实现生产者消费者模型

    BlockingQueue BlockingQueue.解决了多线程中,如何高效安全"传输"数据的问题.程序员无需关心什么时候阻塞线程,什么时候唤醒线程,该唤醒哪个线程. 方法介绍 ...

  7. JSP读取properties文件变量

    1.jsp代码 <%ResourceBundle res = ResourceBundle.getBundle("properties文件名"); %> 2.js代码 ...

  8. 守护服务Supervisor的安装和使用

    Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统 ...

  9. Qt之QTableWidget

    学习QTableWidget就要首先看看QTableView控件(控件也是有”家世“的!就像研究人一样一样的),因为QTableWidget继承于类QTableView. 两者主要区别是QTableV ...

  10. B站视频下载

    借助Chrome插件 bilibili哔哩哔哩下载助手 在谷歌应用商城下载安装后在在浏览器右上角显示如下图标 打开想要下载的视频,网页右下角会有如下图标,点击该图标 点击下面的合并下载按钮即可 htt ...