2019独角兽企业重金招聘Python工程师标准>>>
今天,我照着书上练习了一下用java做一个小球缓慢下落的动漫演示。它是由一个TetrisPanelL类和一个MyWindow类来完成的所有代码如下:
package Demo;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
import com.sun.prism.Image;
public class TetrisPanel extends JPanel implements Runnable{
//绘图线程类
public int ypos=-80;//小球左上角的纵坐标
//在类中添加如下连个私有成员
private Image iBuffer;
private Graphics gBuffer;
public TetrisPanel(){
//新建一个新线程
Thread t=new Thread(this);
//启动线程
t.start();
}
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
//super.paint(g);将面板上原来画的东西擦掉
//先清屏否则原来画的东西仍在
g.clearRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.red);//设置小球颜色
g.fillOval(90, ypos, 80, 80);//绘制小球
}
@Override
public void run() {//重载run方法
// TODO Auto-generated method stub
while(true){//线程中的无限循环
try{
Thread.sleep(30);//线程休眠30秒
}catch(InterruptedException e){
}
ypos+=5;//修改小球左上角的纵坐标
if(ypos>=30)//小球离开窗口后重设左上角的纵坐标
ypos=-80;
repaint();//窗口重绘
}
}
}
package Demo;
import java.awt.Container;
import java.awt.event.WindowAdapter;
import javax.swing.JFrame;
import com.sun.glass.events.WindowEvent;
public class MyWindow extends JFrame{
MyWindow(){
this.setTitle("这是个测试窗口");
Container c=this.getContentPane();//获得面板容器
c.add(new TetrisPanel());
//设置窗口开始显示时距离屏幕左边400个像素点
//距离屏幕上边200个像素点
this.setBounds(400,200,300,300);
//设置窗口关闭按钮具有关闭整个程序功能
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建窗口的实例DB,开始整个程序
MyWindow DB=new MyWindow();//创建主类对象
DB.addWindowListener(new WindowAdapter() {//添加窗口关闭方法
public void WindowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
运行结果:
一个红色小球以一定速度从上往下掉落,当小球掉到底部时将循环继续从上往下掉,只要不关闭程序,小球就重复下落过程。