java图形界面设置教程.ppt
简单简单GUI程序程序1.引用需要的包和类。2.设置一个顶层的容器。3.根据需要为容器设置布局管理器或使用默认布局管理器。4.将组件添加到容器内。5.为响应事件的组件编写事件处理代码。建立窗口Frame类的操作创建窗口的基本和必要操作包括以下方面:1.设置窗口的大小。2.设置窗口的标题。3.确定窗口在屏幕的放置位置。4.显示窗口。5.关闭窗口。Java实例建立窗口import java.awt.*;class Window1 static Frame fra=new Frame(这是一个窗口程序);/创建一个窗口对象fra并设置窗口标题为这是一个窗口程序 public static void main(String args)fra.setBounds(0,0,300,200);/设置窗口大小并将窗口放置在屏幕的某个位置 fra.setResizable(false);/设置窗口尺寸不可以改 fra.setState(fra.NORMAL);/设置窗口为标准状态 fra.show();/继承Window类的show()方法,在屏幕上显示窗口 Java实例添加按钮import java.awt.*;class But2 public static void main(String args)Frame fra=new Frame(创建按钮程序);Button but=new Button(push me);fra.setBounds(0,0,300,200);fra.setLayout(null);/关闭页面设置 but.setBounds(50,50,100,50);/设置按钮的大小 fra.add(but);fra.setVisible(true);Java语言中的事件处理 在对事件进行处理时,它是采用一种委托事件模型的形式。“委托事件模型”由产生事件的对象、事件对象和监听者对象之间的关系所组成。产生事件的对象会在事件产生时,将与该事件相关的信息封装在一个称之为“事件对象”的对象中,并将该对象传递给监听者对象,监听者对象根据该事件对象内的信息决定适当的处理方式。监听者对象要得到事件发生的通知,必须向产生事件的对象注册,当事件产生时,产生事件的对象就会主动通知监听者对象,监听者对象根据产生该事件的对象来决定处理事件的方法。监听者对象就是用来处理事件的对象,它等候事件的发生,并在事件发生时接收到通知。事件处理事件处理l图形用户界面中每一个可能产生事件的组件为事件源,假如一个Button对象引发ActionEvent类代表的事件ACTION_PERFORMED;l如果要监听事件源上发生的事件,就要把能够处理该事件的监听者注册给事件源,如将实现了ActionListener接口的对象注册给Button对象。具体注册方法是调用事件源的相关方法,如调用Button类的addActionListener()方法,并以监听者对象作为实际参数。l监听者具有监听和处理事件的能力,它实现了接口的所有抽象方法并写出具体的方法体。如Button对象实现ActionListener接口的抽象方法actionPerformed()。l当事件发生时,事件源将事件作为实际参数传递给监听者中负责处理这类事件的方法。这个方法被自动调用执行,事件得到处理。事件监听者种类lActionListener:处理动作事件,例如单击按钮。lComponetListener:处理组件被隐藏、移动、尺寸移动或显示的事件。lContainerListener:处理在容器中加入组件或删除组件的事件。lFocusListener:处理组件获得或失去焦点的事件。lKeyListener:监听键盘事件。lMouseListener:监听鼠标的单击、进入组件、退出组件或者按下鼠标的事件。lMouseMotionListener:监听鼠标拖动或者移动的事件。lTextListener:监听文本值改变的事件。lWindowListener:处理窗口激活、失去活动窗口、最小化、不最小化、打开、关闭或者退出的事件。事件类事件类1事件类说明事件源ActionEvent 通常按下按钮,双击列表项或选中一个菜单项时,就会生成此事件。Button、List、MenuItem、TextField AdjustmentEvent 操纵滚动条时会生成此事件。Scrollbar ComponentEvent 当一个组件移动、隐藏、调整大小或成为可见时会生成此事件。Component ItemEvent 单击复选框或列表项时,或者当一个选择框或一个可选菜单的项被选择或取消时生成此事件。Checkbox、CheckboxMenuItem、Choice、List FocusEvent 组件获得或失去键盘焦点时会生成此事件。Component事件类事件类2事件类说明事件源KeyEvent 接收到键盘输入时会生成此事件。Component MouseEvent 拖动、移动、单击、按下或释放鼠标或在鼠标进入或退出一个组件时,会生成此事件。Component ContainerEvent 将组件添加至容器或从中删除时会生成此事件。Container TextEvent 在文本区或文本域的文本改变时会生成此事件。TextField、TextArea WindowEvent 当一个窗口激活、关闭、失效、恢复、最小化、打开或退出时会生成此事件。Window 事件及其响应 每一个事件类都有一个“唯一”的事件处理方法接口,如处理鼠标事件“MouseEvent”类的对应接口为“MouseListener”接口,处理按钮“ActionEvent”事件类的对应接口为“ActionListener”接口;监听者向事件源注册,使监听者能够监听到并处理事件源产生的事件如ActionEvent事件,实现其接口ActionListener。如:button事件,注册监听者为handler,则:button.addActionListener(handler);class handler implements ActionListener public void actionPerformed(ActionEvent e)事件监听者接口及实现方法 事件类 监听者接口 监听者接口所提供的事件处理方法 ActionEvent ActionListener actionPerformed(ActionEvent e)AdjustmentEvent AdjustmentListener adjustmentValueChange(AdjustmentEvent e)ItemEvent ItemListener itemStateChange(ItemEvent e)KeyEvent KeyListener keyType(KeyEvent e)keyPressed(KeyEvent e)keyReleased(KeyEvent e)MouseEvent MouseListener mouseClicked(MouseEvent e)mouseEntered(MouseEvent e)mouseExited(MouseEvent e)mousePressed(MouseEvent e)mouseReleased(MouseEvent e)mouseDragged(MouseEvent e)mouseMoved(MouseEvent e)事件监听者接口及实现方法(续)事件类 监听者接口 监听者接口所提供的事件处理方法 TextEvent TextListener textValueChange(TextEvent e)WindowEvent WindowListener windpwActivated(WindowEvent e)windpwClosed(WindowEvent e)windpwClosing(WindowEvent e)windpwDeactivated(WindowEvent e)windpwDeiconifieded(WindowEvent e)windpwIconfied(WindowEvent e)windpwOpened(WindowEvent e)Java实例实现按钮事件import java.awt.*;import.*;class ButtEventApp extends Frame implements ActionListener static ButtEventApp fra=new ButtEventApp();public static void main(String args)Button but=new Button(push me);fra.setBounds(0,0,300,200);fra.setLayout(null);Java实例(续)but.setBounds(50,50,100,50);but.addActionListener(fra);fra.add(but,BorderLayout.CENTER);fra.setVisible(true);public void actionPerformed(ActionEvent e)fra.setBackground(Color.red);适配器 如果使用监听者接口,必须实现接口所有定义的方法,但是大多数情况下只是需要使用其中的一个或几个方法。为了避免麻烦,AWT中提供了多个相应的适配器类,这些适配器类实现了响应接口的所有方法的空操作。当使用时只需要扩展适配器类并且覆盖我们需要实现的方法即可,而无需实现原来接口的所有方法。Java实例Adapter类import java.awt.*;import.*;class Label1 extends Frame public Label1()super(Event Example);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););initialize();public void initialize()this.setLayout(null);Label bl=new Label();Java实例(续)setSize(300,200);bl.setText(“欢迎使用Java语言”);bl.setBounds(50,50,150,20);bl.setAlignment(Label.CENTER);bl.setBackground(Color.blue);bl.setForeground(Color.red);add(bl);setVisible(true);public static void main(String args)new Label1();事件处理练习实验目的:(1)掌握图形用户界面的基本实现方法;(2)掌握事件处理机制;(3)编写并调试带事件处理的GUI程序。实验内容:(1)编写一个简单的屏幕变色程序。当用户单击”变色”按钮时,窗口颜色就自动地变成另一种颜色。(2)设计一个简易的计算器。在操作数标签的右侧的两个文本行输入操作数,当单击“+,*,/”按钮时,对两个操作数进行运算并将结果填入到“结果”标签右侧的文本行中。事件处理练习实验要求:(1)组件在窗口中的位置要合理。(2)响应窗口的关闭操作事件。(3)响应动作事件。解析:通过(int)(Math.random()*1000)%256;产生3个0255之间的随机整数,分别存放在 int型变量r,g和b中,再通过setBackground(new Color(r,g,b)将3个随机整数对应的颜色设置为窗口的背景色。