您的当前位置:首页正文

实验日志4

2024-01-15 来源:好走旅游网
 面向对象程序设计——Java实验日志

指导教师 李盘林 实验时间: 2011 年 4 月 22 日 学院 计算机 专业 计算机科学与技术

班级 0410801 学号 08170221 姓名 盛洋 实验室 S318

实验题目:

Java布局管理和Java的事件的综合应用 实验目的:

1. 2. 3. 4. 掌握Java语言中几种布局管理器。

能熟练综合运用这几种布局管理器设计复杂的图形界面。 理解事件的概念。

能熟练使用Java提供的事件处理方法,进行符合要求的事件处理

实验要求:

1. 结合多种布局管理器设计一个复杂的图形界面。 2.掌握Java提供的各种事件接口,并能灵活使用。

实验主要步骤: 3.1 Java布局管理

容器中组件的位置和大小通常由布局管理器决定。每个容器都有一个默认的布局管理器。当容器被创建后,可以通过特定的方法改变容器的布局管理器。

1. 用BorderLayout和GridLayout布局管理器设计一个如下图所示的图形界

面:

2. 在记事本编辑如下源程序: import java.awt.*; public class Ex9_1 { private Frame demoframe; private Button b1; private Button b2; private Button b3; private Button b4; private Panel cpanel; private Button b[];

} 3.

public void Init() { demoframe =new Frame(\"布局管理器\"); b1 =new Button(\"确定\"); demoframe.add(b1,\"East\"); b2 =new Button(\"取消\"); demoframe.add(b2,\"West\"); b3 =new Button(\"Hello,\"); demoframe.add(b3,\"North\"); b4 =new Button(\"Java!......\"); demoframe.add(b4,\"South\"); cpanel =new Panel(); cpanel.setLayout(new GridLayout(3,3,7,7)); demoframe.add(cpanel,\"Center\"); b =new Button[9]; for(int i=0;i<9;i++) { b[i] =new Button(); b[i].setSize(50,50); b[i].setLabel(Integer.toString(i)); cpanel.add(b[i]); } demoframe.pack(); demoframe.setVisible(true); }

public static void main(String[] args) { Ex9_1 demo =new Ex9_1(); demo.Init(); }

保存程序Ex9_1.java,编译运行程序。理解BorderLayout和GridLayout布局管理器的用法。

4. 结合上述例子,试编写如下图所示的图形界面:

3.2 Java事件

Java中的每种事件类都有一个对应的接口,接口中声明了一个或多个抽象的事件处理方法,凡是需要接收并处理事件对象的类,都需要实现相应的接口。

1. 当用户点击按钮时,AWT事件处理系统将向按钮发送一个ActionEvent

事件对象。如果应该程序需要对此作为反应,那么就需要为按钮注册事件监听程序并实现ActionListenner接口。 在记事本编辑如下源程序: import java.awt.*;

import java.awt.event.*;

public class Ex10_1 implements ActionListener{ private Frame f; private Button b; private Label lb;

public static void main(String[] args) { Ex10_1 demo =new Ex10_1(); demo.Init(); }

public void Init() { f =new Frame(\"Action Event\"); b =new Button(\"确定\"); lb =new Label(\"你好!\ f.add(lb,\"North\"); b.addActionListener(this); f.setSize(150,100); f.add(b,\"South\"); f.setVisible(true); }

public void actionPerformed(ActionEvent parm1) { lb.setText(\"你点击了确认按钮!\"); } }

2. MouseMotionListener接口中提供声明了mouseDragged()和mouseMoved()

两个抽象方法,分别用于处理鼠标的拖动和移动。MouseListener接口声明了mouseEntered()、mouseExited()、mousePressed()、mouseReleased()和mouseClicked()五个抽象方法。

在记事本编辑如下源程序,编译并运行,体会这几种方法的不同之处: import java.awt.*;

import java.awt.event.*;

public class Ex10_2 implements MouseMotionListener,MouseListener{ private Frame f; private Label t1,t2; public static void main(String[] args) { Ex10_2 demo =new Ex10_2(); demo.Init();

} 3.

}

public void Init() { f =new Frame(\"Action Event\"); t1 =new Label(\"Java,\ t2 =new Label(\"你好!\ f.add(t1,\"North\"); f.add(t2,\"South\"); f.addMouseListener(this); f.addMouseMotionListener(this); f.setSize(300,200); f.setVisible(true); }

public void mouseClicked(MouseEvent parm1) { t1.setText(\"你点击了鼠标!\"); }

public void mousePressed(MouseEvent parm1) { t1.setText(\"你按下了鼠标!\"); }

public void mouseReleased(MouseEvent parm1) { t1.setText(\"你释放了鼠标!\"); }

public void mouseEntered(MouseEvent parm1) { t1.setText(\"鼠标进入!\"); }

public void mouseExited(MouseEvent parm1) { t1.setText(\"鼠标退出!\"); }

public void mouseDragged(MouseEvent parm1) { t2.setText(\"你在拖动鼠标:X=\"+parm1.getX()+ \" Y=\"+parm1.getY()); }

public void mouseMoved(MouseEvent parm1) { t2.setText(\"你在移动鼠标:X=\"+parm1.getX()+ \" Y=\"+parm1.getY()); }

给程序添加按’ESC’键退出的功能。

心得体会:

实践结合理论是把知识牢固的重要方法,这次实验让我深深体会到了这一点。通过

了这次实验的再次学习,自己认为基本掌握了Java语言中几种布局管理器,可以运用集中布局管理器设计简单的图形界面,所以还需加强学习,争取设计出复杂有含量的界面。但是也理解了事件的基本概念,了解了事件处理方法。本次实验可以说是收获不小,自己也知道还需学期更多的知识来强化自己。

因篇幅问题不能全部显示,请点此查看更多更全内容