好文档 - 专业文书写作范文服务资料分享网站

北京信息科技大学Java语言程序设计-GUI

天下 分享 时间: 加入收藏 我要投稿 点赞

【实验名称】实验 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() {

y--;

repaint(); }

// 下移这个圆 public void down() { y++;

repaint(); }

// 重画这个圆

protected void paintComponent(Graphics g) { super.paintComponent(g);

g.drawOval(getWidth()/2+x,getHeight()/2+y, 10, 10); } } }

【实验过程及运行结果】

在实验中遇到的问题是不会画圆,经过查书知道可以使用

drawOval方法画圆。

2、(创建一个简单的计算器)编写一个程序完成加、减、乘、除操作。 图 5 简单的计算器

说明 : ⑴程序来源编程练习 16.4(P456)。⑵文本框组件 javax. swing.JTextField, 请参见教材 17.6 小节 (P473), 或者 Java API 文档。⑶字符串与数值之间的转换,请参见 2.18.1 小节( P44)和 9.2.10 小节( P247),或者使用字符串格式化方法 9.2.11 ( P248)。 【实验预习】

1. 问题描述:创建一个界面,利用鼠标点击加减乘除按钮,实现两个数之间的

运算。

2. 输入:在文本域中输入两个数字,并用鼠标点击按钮。处理:创建一个监听

类,对按钮进行监听,计算两个数字之间的运算。输出:在结果文本域中显

示运算结果

3. 技术要求:需要使用布局管理器, 事件监听,及字符串与数字之间的转换等。 【附编程代码】

import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame;

import javax.swing.JLabel; import javax.swing.JTextField;

public class easyCalculation extends JFrame{

private JButton Add=new JButton(\ 加 \ private JButton Subtract=new JButton(\ 减 \ private JButton Multiply=new JButton(\ 乘 \ private JButton Divide=new JButton(\ 除\ private JTextField one=new JTextField(5);

private JTextField second=new JTextField(5); private JTextField all=new JTextField(10); private JLabel a=new JLabel(\ 第一个数 \ private JLabel b=new JLabel(\ 第二个数 \ private JLabel c=new JLabel(\ 结果 \ public easyCalculation(){

FlowLayout panel=new FlowLayout(FlowLayout.CENTER, 20, 50); setLayout(panel); add(a);

add(one); add(b);

add(second); add(c); add(all); add(Add);

add(Subtract); add(Multiply); add(Divide);

Add.addActionListener(new Listener());

Subtract.addActionListener(new Listener()); Multiply.addActionListener(new Listener()); Divide.addActionListener(new Listener()); }

// 主方法

public static void main(String[] args) {

easyCalculation frame = new easyCalculation();

frame.setTitle(\ 简单的计算器 \

frame.setLocationRelativeTo(null); // Center the frame

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(500, 200); frame.setVisible(true);

}

class Listener implements ActionListener {

public void actionPerformed(ActionEvent e) {

System.out.println(new java.util.Date(e.getWhen())); if (e.getSource() == Add) {

double a1=Double.parseDouble(one.getText()); double b1=Double.parseDouble(second.getText()); all.setText(String.format(\ }

else if (e.getSource() == Subtract) {

double a1=Double.parseDouble(one.getText()); double b1=Double.parseDouble(second.getText()); all.setText(String.format(\ }

else if (e.getSource() == Multiply) {

double a1=Double.parseDouble(one.getText()); double b1=Double.parseDouble(second.getText()); all.setText(String.format(\ }

else if (e.getSource() == Divide) {

double a1=Double.parseDouble(one.getText()); double b1=Double.parseDouble(second.getText()); all.setText(String.format(\ }

} } }

【实验过程及运行结果】

在实验过程中遇到问题是,经常忘记添加接口或者继承。

北京信息科技大学Java语言程序设计-GUI

【实验名称】实验5JavaGUI【实验目的】1、学习和掌握Java常用的GUI组件。2、学习和掌握Java常用的布局管理器。3、实习和掌握Java的事件驱动程序设计方法。4、能够实现简单的JavaGUI。【实验步骤(解题过
推荐度:
点击下载文档文档为doc格式
240ni76z2m4vbt01gdv99bpag891bi0044v
领取福利

微信扫码领取福利

微信扫码分享