1 /*
2 * 不添加事件监听的话最大最小可以用,但关闭不可以
3 */
4 import java.awt.Color;
5 import java.awt.Frame;
6 import java.awt.Graphics;
7 import java.awt.Image;
8 import java.awt.Toolkit;
9 import java.awt.event.WindowAdapter;
10 import java.awt.event.WindowEvent;
11 //coordinate:坐标系;oval椭圆(矩形的内切,不信可以把矩形和椭圆的参数设置的一样)
12 //计算机画椭圆采用的是参数方程 x = a*cosθ ,y = b*sinθ,不用一般方程;采用弧度
13 public class BallGame extends Frame {
14
15 /**
16 * 图片的位置不和src平级就显示不了
17 */
18 private static final long serialVersionUID = -4408396034592021515L;//这个是导出jar包时建议的,我也不知道啥意思
19 Image sun = Toolkit.getDefaultToolkit().getImage("images/sun.jpg");
20 double x=100;
21 double y=100;
22 double degree = Math.PI/3;//初始角度
23 public void paint(Graphics g){
24 //System.out.println("窗口被画了一次!");
25 g.drawImage(sun, (int)x,(int)y, null);
26 x = x+ 10*Math.cos(degree);//椭圆的中心每次要变化
27 y = y+10*Math.sin(degree);
28
29 if(y>300-30){
30 degree = - degree;
31 }
32 if(x>500-30){
33 degree = Math.PI-degree;
34 }
35 if(x<0){
36 degree = Math.PI-degree;
37 }
38 if(y<30){//减去标题栏宽度,因为标题栏也算在坐标系内,否则上面小球会进去
39 degree = -degree;
40 }
41 }
42
43 void launchFrame(){
44 setSize(500, 300);
45 setLocation(50, 50);
46 setTitle("火星十一郎");
47 setBackground(Color.black);
48 myEvent();
49 setVisible(true);
50 new PaintThread().start();
51 }
52
53 public static void main(String[] args){
54 new BallGame().launchFrame();
55 }
56
57 class PaintThread extends Thread {
58 public void run(){
59 while(true){
60 repaint(); //重画窗口!
61 try{
62 Thread.sleep(40); //40ms 1s=1000ms
63 }catch (Exception e) {
64 e.printStackTrace();
65 }
66 }
67 }
68 }
69
70 private void myEvent()
71 {
72 /*
73 * Cannot make a static reference to the non-static method addWindowListener(WindowListener) from the type Window
74 * 把BallGame改成this就对了
75 */
76 this.addWindowListener(new WindowAdapter()//窗口监听
77 {
78 public void windowClosing(WindowEvent e)
79 {
80 //System.out.println("窗体执行关闭!");
81 System.exit(0);
82 }
83 });
84 }
85 }


Java模拟弹球效果_标题栏

  导出jar包直接用MyEclipse的Export,不过我发现我的jar包没显示图片。

  Roy说这样写就行了(确实对了),并把images放在src目录下。



1 Image sun = Toolkit.getDefaultToolkit().getImage(getFilePath("/images/sun.jpg"));
2
3
4 public URL getFilePath(String path) {
5 return BallGame.class.getResource(path);
6 }


 


作者:​​火星十一郎​

本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.