-
创建一个 demo0 项目。
-
在项目根目录中创建 image 文件夹,并把下面两张图片拷贝到 image 目录中。
-
图 1
-
图 2
-
-
在 src 中创建 BallGame 类。
-
目录结构如下:
-
代码:
// 导入包 import java.awt.*; import javax.swing.*; // 定义 BallGame 类并继承 javax.swing.* 中的窗口类 public class BallGame extends Jframe { // 加载窗口 void launchframe() { setSize(300,300); // 窗口大小 setLocation(50,50); // 窗口位置 setVisible(true); // 控制窗口的显隐 } // 入口 public static void main(String[] args) { BallGame game = new BallGame(); game.launchframe(); } } -
运行结果:
-
代码:
// 导入包 import java.awt.*; import javax.swing.*; // 定义 BallGame 类并继承 javax.swing.* 中的窗口类 public class BallGame extends Jframe { // 引入图片 Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png"); Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg"); // 画窗口 public void paint(Graphics g) { System.out.println("画了一次窗口"); g.drawImage(desk,0,0,null); // 先画桌面,桌面在底层 g.drawImage(ball,100,100,null); // 后画球,球在桌面上 } // 加载窗口 void launchframe() { setSize(856,500); // 窗口大小 setLocation(50,50); // 窗口位置 setVisible(true); // 控制窗口的显隐 } // 入口 public static void main(String[] args) { BallGame game = new BallGame(); game.launchframe(); } } -
运行结果:
-
注意,有的时候窗口里的图片加载不出来,如下图:
遇到这种情况可以先将画出的窗口最小化,然后再从任务栏中把窗口打开,这样图片就加载出来了。
-
代码:
// 导入包 import java.awt.*; import javax.swing.*; // 定义 BallGame 类并继承 javax.swing.* 中的窗口类 public class BallGame extends Jframe { // 引入图片 Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png"); Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg"); // 定义小球的坐标 double x = 100; double y = 250; // 定义小球方向 boolean right = true; // 画窗口 public void paint(Graphics g) { System.out.println(x); g.drawImage(desk,0,0,null); // 先画桌面,桌面在底层 g.drawImage(ball,(int)x,(int)y,null); // 后画球,球在桌面上 if(right) x += 15; else x -= 15; if(x > 780) right = false; if(x < 36) right = true; } // 加载窗口 void launchframe() { setSize(856,500); // 窗口大小 setLocation(50,50); // 窗口位置 setVisible(true); // 控制窗口的显隐 while(true) { repaint(); try { Thread.sleep(40); // 40ms } catch (Exception e) { e.printStackTrace(); } } } // 入口 public static void main(String[] args) { BallGame game = new BallGame(); game.launchframe(); } } -
运行结果:
-
代码:
// 导入包 import java.awt.*; import javax.swing.*; // 定义 BallGame 类并继承 javax.swing.* 中的窗口类 public class BallGame extends Jframe { // 引入图片 Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png"); Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg"); // 定义小球的坐标 double x = 80; double y = 250; double maxX = 791; double maxY = 430; double minX = 35; double minY = 65; // 定义弧度 60°角 double degree = 3.14 / 3; // 画窗口 public void paint(Graphics g) { g.drawImage(desk,0,0,null); // 先画桌面,桌面在底层 g.drawImage(ball,(int)x,(int)y,null); // 后画球,球在桌面上 x += 10 * Math.cos(degree); y += 10 * Math.sin(degree); if(y > maxY || y < minY) degree = -degree; if(x > maxX || x < minX) degree = 3.14 - degree; } // 加载窗口 void launchframe() { setSize(856,500); // 窗口大小 setLocation(50,50); // 窗口位置 setVisible(true); // 控制窗口的显隐 while(true) { repaint(); try { Thread.sleep(40); // 40ms } catch (Exception e) { e.printStackTrace(); } } } // 入口 public static void main(String[] args) { BallGame game = new BallGame(); game.launchframe(); } } -
运行结果:



