北京信息科技大学Java语言程序设计-GUI
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【实验名称】实验 5 Java GUI
【实验目的】
1、学习和掌握 Java常用的 GUI组件。
2、学习和掌握 Java常用的布局管理器。
3、实习和掌握 Java的事件驱动程序设计方法。
4、能够实现简单的 Java GUI 。
【实验步骤(解题过程)】
1、第一步, Java GUI 静态界面的设计和实现,包括:组件和组件的摆放(布
局管理器)。
2、第二步, Java GUI 动态事件处理的设计与实现,需要Java事件驱动模型。
3、第三步,如果需要实体类支持,则按实验2的步骤实现实体类并使用。
【实验内容】
1、(移动小球)编写一个程序,在面板上移动小球。定义一个面板类来显示小球,并提供想做、向右、向上和向下移动小球的方法。
说明:⑴程序来源编程练习 16.3 (P456)。⑵可以不考虑小
球移动到边界外的情况。
【实验预习】
1.问题描述:创建一个界面,通过鼠标点击按钮实现小球的上下左右移动。
2.输入;鼠标点击按钮;处理:通过事件监听,实现圆的重画;输出;显示出
移动效果。
3.技术支持;需要用到事件监听,及圆的绘制即图形知识,布局管理器等。
【附编程代码】
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.*; import
java.awt.*;
import java.awt.event.*;
public class MovingBall extends JFrame {
private static JButton bleft=new JButton("向左");
private static JButton bright=new JButton("向右");
private static JButton bup=new JButton("向上");
private static JButton bdown=new JButton("向下");
private CirclePanel canvas = new CirclePanel();
public MovingBall() {
JPanel panel = new JPanel(); //将按钮放入面板中
panel.add(bleft);
panel.add(bright);
panel.add(bup);
panel.add(bdown);
this.add(canvas, BorderLayout.CENTER); //将含有圆的面板放在中央this.add(panel, BorderLayout.SOUTH); //将含有按钮的面板放在右边
//创建按钮的监听器并注册到按钮
bleft.addActionListener(new Listener());
bright.addActionListener(new Listener());
bup.addActionListener(new Listener());
bdown.addActionListener(new Listener());
}
//主方法
public static void main(String[] args) {
JFrame frame = new MovingBall();
frame.setTitle(" 移动的小球 ");
frame.setLocationRelativeTo(null); // Center the frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(480, 300);
frame.setVisible(true);
}
//监听类
class Listener implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println(new java.util.Date(e.getWhen()));
if (e.getSource() == bleft)
canvas.left();
else if (e.getSource() == bright)
canvas.right();
else if (e.getSource() ==bup)
canvas.up();
else if (e.getSource() == bdown)
canvas.down();
}
}
//含有一个圆的面板的类
class CirclePanel extends JPanel {
private int x =0;
private int y = 0;
//左移这个圆
public void left() {
x--;
repaint();
}
//右移这个圆
public void right()
{ x++; repaint();
}
// 上移这个圆
public void up() {