JAVA程序设计 实验四 Java开发环境的熟悉

《Java程序设计》实 验 报 告(四)

实验名称: Java开发环境的熟悉

实验地点:10-413

所使用的工具软件及环境:

环境:Windows 8.1;jdk 1.8;

工具:eclipse

实验目的:

掌握java可视化界面设计,理解并应用多线程技术。

实验内容:

2.编写一个Applet内部显示一个蓝色反弹球的程序,通过一个事件使该球开始运动,在该球撞击Applet边框时,它应从边框弹回并以相反的方向运动。

源程序:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class BouncingBall extends JPanel {
    private int x = 0;
    private int y = 0;
    private int xVelocity = 0;
    private int yVelocity = 0;
    private boolean isMoving = false;

    public BouncingBall() {
        setFocusable(true);
        addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_SPACE) {
                    isMoving = true;
                    xVelocity = 1;
                    yVelocity = 1;
                    Thread t = new Thread(new BallRunnable());
                    t.start();
                }
            }
        });
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.BLUE);
        g.fillOval(x, y, 30, 30);
    }

    private class BallRunnable implements Runnable {
        public void run() {
            while (isMoving) {
                x += xVelocity;
                y += yVelocity;

                if (x < 0 || x > getWidth() - 30) {
                    xVelocity = -xVelocity;
                }
                if (y < 0 || y > getHeight() - 30) {
                    yVelocity = -yVelocity;
                }

                repaint();

                try {
                    Thread.sleep(10);
                } catch (InterruptedException ex) {
                    // do nothing
                }
            }
        }
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Bouncing Ball");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        BouncingBall panel = new BouncingBall();
        frame.add(panel);
        frame.setVisible(true);
    }
}

实验结果:

该程序可以显示一个蓝色的反弹球,并且可以在按下空格后使其开始运动。当球撞到窗口边缘时,它会弹回并以相反的方向移动:

该程序继承了JPanel类,并在构造函数中添加了一个键盘监听器,以便可以监听空格键的按下事件。在键盘监听器中,如果空格键被按下,则创建一个BallRunnable对象,并将其作为参数传递给一个新线程,并启动该线程。

BallRunnable是一个内部类,它实现了Runnable接口,并包含了一个run方法,该方法在新线程中执行。在run方法中,球的位置被更新,并且如果球碰到窗口的边缘,则速度会反向。然后,调用repaint方法来重绘面板。在重绘之后,线程休眠10毫秒,以便球的移动速度可以适当地调整。最后,如果isMoving变量为false,则线程会停止。

使用多线程的好处是可以避免阻塞事件分派线程,以便在程序的其他部分执行操作时,球仍然可以运动。此外,多线程还可以提高程序的性能和响应性,特别是在复杂的图形操作和动画中。

收获与体会:

本次实验是针对Java开发环境的熟悉,主要目的是掌握Java可视化界面设计,理解并应用多线程技术。实验内容是实现程序可以显示一个蓝色的反弹球,并且可以在按下空格后使其开始运动。当球撞到窗口边缘时,它会弹回并以相反的方向移动

在本次实验中,我首先了解了Java的可视化界面设计,使用了Swing框架来创建窗口和球的图形,并在窗口中添加了按键事件的监听器,以便实现空格键的按下事件响应。

其次,我学习了Java中的多线程技术,并使用了Thread类来创建新线程,用来实现球的运动。在多线程编程过程中,我注意到线程之间的同步和协作非常重要,否则会出现竞争条件等问题。

最后,我通过实验感受到了多线程编程的优点。多线程可以提高程序的并发性和响应速度,同时也可以提高CPU的利用率。但是,多线程也会带来一些问题,例如线程安全和调试等问题,需要我们在编程中加以注意和处理。

总之,通过本次实验,我不仅熟悉了Java的可视化界面设计,还深入理解了多线程技术的应用和优缺点,同时也增强了我对Java编程的兴趣和信心。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值