资源简介
用两个圆叠加实现简单的实现月食的模拟,采用多线程实现动画效果。
代码片段和文件信息
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Sky extends Jframe implements ComponentListenerActionListenerRunnable
{
private Thread thread_rollby;
private JPanel Jpanel_1Jpanel_2;
private JButton Jbutton_playJbutton_pauseJbutton_fastJbutton_slowJbutton_stop;
private JLabel Jlabel_speed;
static int xy;
static int sleeptime=80;
public Sky()
{super(“月食“);
this.setSize(680400);
this.setLocation(200240);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
Jpanel_1=new JPanel(new FlowLayout(0));
this.add(Jpanel_1BorderLayout.NORTH);
Jpanel_1.setBackground(Color.BLACK);
Jbutton_play=new JButton(“播放“);
Jpanel_1.add(Jbutton_play);
Jbutton_play.addActionListener(this);
Jbutton_pause=new JButton(“暂停“);
Jpanel_1.add(Jbutton_pause);
Jbutton_pause.addActionListener(this);
Jbutton_pause.setEnabled(false);
Jbutton_fast=new JButton(“加速“);
Jpanel_1.add(Jbutton_fast);
Jbutton_fast.addActionListener(this);
Jbutton_slow=new JButton(“减速“);
Jpanel_1.add(Jbutton_slow);
Jbutton_slow.addActionListener(this);
Jbutton_stop=new JButton(“停止“);
Jpanel_1.add(Jbutton_stop);
Jbutton_stop.addActionListener(this);
Jbutton_stop.setEnabled(false);
Jpanel_2=new JPanel(new FlowLayout(0));
this.add(Jpanel_2BorderLayout.CENTER);
Jpanel_2.setSize(600400);
Jpanel_2.setBackground(Color.BLACK);
Jlabel_speed=new JLabel(“中速“);
Jlabel_speed.setForeground(Color.YELLOW);
Jpanel_2.add(Jlabel_speed);
this.addComponentListener(this);
x=Jpanel_2.getWidth()/15;
y=Jpanel_2.getHeight()/4;
this.setVisible(true);
}
public void run()
{while(thread_rollby.isAlive()&&!thread_rollby.isInterrupted())
{x=x+1;
try{
repaint();
thread_rollby.sleep(sleeptime);
}
catch(InterruptedException e)
{break;
}
}
}
public void paint(Graphics g)
{super.paint(g);
int diameter=Math.min(Jpanel_2.getWidth()*2/3Jpanel_2.getHeight()*2/3);
g.setColor(Color.YELLOW);
g.fillOval(280ydiameterdiameter);
g.setColor(Jpanel_2.getBackground());
g.fillOval(xydiameterdiameter);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==Jbutton_play)
{thread_rollby=new Thread(this);
thread_rollby.start();
Jbutton_play.setEnabled(false);
Jbutton_pause.setEnabled(true);
Jbutton_stop.setEnabled(true);
}
if(e.getSource()==Jbutton_pause)
{thread_rollby.interrupt();
Jbutton_pause.setEnabled(false);
Jbutton_play.setEnabled(true);
}
if(e.getSource()==Jbutton_fast)
{
Jbutton_slow.setEnabled(true);
sleeptime/=2;
switch(sleeptime)
{case 160:Jlabel_speed.setText(“较慢“);break;
case 80:Jlabel_speed.setText(“中速“);break;
case 40:Jlabel_speed.setText(“较快“);break;
case 20:{Jlabel_speed.setText(“快速“);
Jbutton_fast.setEnabled(false);
}break;
}
}
if(e.getSource()==Jbutton_slow)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4109 2009-06-08 15:01 Sky\Sky.class
文件 3899 2009-06-08 15:01 Sky\Sky.java
目录 0 2010-03-22 15:00 Sky
----------- --------- ---------- ----- ----
8008 3
- 上一篇:android断点续传demo
- 下一篇:java初学者习题
相关资源
- java初学者习题
- java web开发框架 MVC+DAO实现
- java 抓取微信公众号文章
- 简单明信片程序Java
- Java DES 加密/解密
- 基于Java EE企业即时通讯工具设计与实
- RxAndroid/RxJava jar
- java 注解开发(包含详细注释项目可以
- Java记事本代码以及实验报告
-
java读取xm
l内容(源代码) - 灿烂星空 java代码
- JAVA毕业实习报告
- 2019年java完整视频 idea版本.txt
- jsp实现交友网络
- JSP网上购物系统 JAVA网上购物系统
- Java语言程序设计-基础篇+进阶篇+英文
- Java对象的复制克隆
- Java解析bt torrent种子文件的工具类代码
- 人事管理系统java+sql
- Java日程管理——万年行事历源代码
- Java固定资产管理系统课程设计源码整
- java程序做成windows服务
- JAVA课程设计--员工信息管理系统
- BACnet java代码完整版
- java-client-4.1.2.jar
- java代码保护,防止反编译
- JavaEE 文件上传代码
- org.greggordon.tools.jar
- Java语言-透明网桥模拟课程设计报告
- java中遍历某个目录下的所有文件及文
评论
共有 条评论