指导教师 李盘林 实验时间: 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语言中几种布局管理器,可以运用集中布局管理器设计简单的图形界面,所以还需加强学习,争取设计出复杂有含量的界面。但是也理解了事件的基本概念,了解了事件处理方法。本次实验可以说是收获不小,自己也知道还需学期更多的知识来强化自己。
因篇幅问题不能全部显示,请点此查看更多更全内容