• JAVA图形小动画之简单行星运动


    //第一个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);
    }
    }

    运行结果图示:

  • 相关阅读:
    bootstrap modal 垂直居中对齐
    BootStrap同时显示多个Modal解决方案
    Echarts使用及动态加载图表数据 折线图X轴数据动态加载
    jQuery操纵DOM元素属性 attr()和removeAtrr()方法使用详解
    jQuery修改class属性和CSS样式
    JS中的substring和substr函数的区别
    select into from和insert into select from两种表复制语句区别
    SQL查询遍历数据方法一 [ 临时表 + While循环]
    JSSDK实现微信自定义分享---java 后端获取签名信息
    Spring 自带的定时任务Scheduled
  • 原文地址:https://www.cnblogs.com/linruier/p/9485223.html
Copyright © 2020-2023  润新知