Java 实验日志指导教师实验时间:2010 年月日学院计算机专业计算机科学与技术班级3110802 学号08600201 姓名张梦实验室S实验题目:Java 布局管理和 java的事件实验目的:1. 掌握 Java语言中几种布局管理器。
2. 能熟练综合运用这几种布局管理器设计复杂的图形界面。
3. 理解事件的概念。
4. 能熟练使用 Java 提供的事件处理方法,进行符合要求的事件处理实验要求:结合多种布局管理器设计一个复杂的图形界面。
掌握 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[];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();}}3.保存程序Ex9_1.java,编译运行程序。
理解BorderLayout和GridLayout布局管理器的用法。
运行结果:实验结果:运行结果:4.结合上述例子,试编写如下图所示的图形界面:编写代码如下:import java.awt.*;import java.awt.event.*;import java.applet.Applet;public class Ex9{private Frame demoframe;private Panel cpanel;private TextField tf;public void Init(){demoframe=new Frame("计算器");cpanel=new Panel();cpanel.setLayout(new GridLayout(4,4,7,7));demoframe.add(cpanel,"Center");tf=new TextField("",15);Button b0 = new Button("1");Button b1 = new Button("2");Button b2 = new Button("3");Button b3= new Button("+");Button b4 = new Button("4");Button b5 = new Button("5");Button b6 = new Button("6");Button b7 = new Button("-");Button b8 = new Button("7");Button b9 = new Button("8");Button b10 = new Button("9");Button b11 = new Button("*");Button b12 = new Button("0");Button b13 = new Button(".");Button b14= new Button("=");Button b15= new Button("/");demoframe.add("North",tf);cpanel.add(b0);cpanel.add(b1);cpanel.add(b2);cpanel.add(b3);cpanel.add(b4);cpanel.add(b5);cpanel.add(b6);cpanel.add(b7);cpanel.add(b8);cpanel.add(b9);cpanel.add(b10);cpanel.add(b11);cpanel.add(b12);cpanel.add(b13);cpanel.add(b14);cpanel.add(b15);demoframe.pack();demoframe.setVisible(true);}public static void main(String[] args){Ex9 demo=new Ex9();demo.Init();}}运行结果如下: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("你好!",Label.CENTER);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("你点击了确认按钮!");}}运行结果:按下“确定”后:MouseMotionListener接口中提供声明了mouseDragged()和mouseMoved()两个抽象方法,分别用于处理鼠标的拖动和移动。
MouseListener 接口声明了 mouseEntered()、mouseExited()、mousePressed()、mouseReleased() 和 mouseClicked()五个抽象方法。
在记事本编辑如下源程序,编译并运行,体会这几种方法的不同之处:port java.awt.*;port java.awt.event.*;blic 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();}public void Init() {f =new Frame("Action Event");t1 =new Label("Java,",Label.CENTER);t2 =new Label("你好!",Label.CENTER);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()); }}运行结果:鼠标退出:鼠标进入:点击鼠标:3. 给程序添加按’ESC’键退出的功能。