二级java程序设计--图形用户界面(1)
来源:互联网 发布:淘宝新店铺如何运营 编辑:程序博客网 时间:2024/05/17 08:36
编写图形用户界面(1)
考点分析和学习目的:1.掌握AWT编写图形用户界面
2.掌握Swing编写图形用户界面
一.概述界面设计遵循下列思路:首先是界面中的组建如何放置,其次是如何让组件响应用户的操作,再次是掌握每种组建的现实效果和如何响应用户操作。
二.用AWT编写图形用户界面抽象窗口工具包AWT(Abstract Window Toolkit)是java提供的建立图形用户界面GUI的开发包。
1.java.awt包提供了基本的GUI设计工具,主要包括组件(Component),容器(Container)和布局管理器(LayoutManager)三个概念,每个概念对应一个类。
2.组件,容器和布局管理器java图形界面的最基本组成部分是组件(Component),例如一个按钮,标签等。组件不能独立显示出来,必须将组件放在一定的容器中才能显示出来。
3.类java.awt.Component是许多组件的父类,一般编程过程中采用的都是Component类的子类。Component类的部分重要成员方法:
getName();getSize();
paint(Graphics g); //绘制组件
repaint() //重新绘制组件
update(); //刷新组件
setVisible(Boolean b); //设置组件是否可见
setSize(Dimension d);
setName(String name);
4.Container是一个类,实际上是Component的子类,因此容器本身也是一个组件,具有组件的所有性质。在实际编程中,往往采用的都是容器类Container的子类。5.LayoutManager本身是一个接口,编程中通常使用的是实现该接口的类。
三.常用容器:
容器java.awt.Container是Component的子类,一个容器可以容纳多个组件,并使它们成为一个整体。所有的组件都可以通过add()方法加入到容器中。
常用的容器有:Window,Panel等。
1.窗口(Frame)
java.lang.Object
-java.awt.Component
-java.awt.Container
-java.awt.Window
-java.awt.Frame
import java.awt.*;public class FirstFrame extends Frame{public static void main(String[] args){FirstFrame fr = new FirstFrame("First container");fr.setSize(200,200);fr.setBackground(Color.yellow);fr.setVisible(true);}public FirstFrame(String str){super(str);}}2.面板(Panel)
java.lang.Object
-java.awt.Component
-java.awt.Container
-java.awt.Panel
Panel:面板。既没有标题,也没有边框。与Frame不同,它不能作为最外层的容器单独存在,它首先必须作为一个组件放置到其他容器中,然后再把它作为容器,把其他组件放到它里面。
四.布局管理器
相关类主要包括:FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout。
1.FlowLayout布局管理器
import java.awt.*;public class Buttons { private Frame f; private Button b1; private Button b2; public static void main(String[] args) { Buttons bt = new Buttons(); bt.go(); } public void go(){ f = new Frame("Frame1"); f.setLayout(new FlowLayout()); b1 = new Button("submit"); b2 = new Button("reset"); f.add(b1); f.add(b2); f.pack(); //紧凑排列 //让窗口尽量下,刚好包容两个组件 f.setVisible(true); }}2.BorderLayout布局管理器:是Window,Frame和Dialog的默认布局管理器,把容器分为5个区域:North,South,East,West和Center,每个区域只能放置一个组件。
import java.awt.*;public class BorderLayoutDemo { public static void main(String[] args) { Frame f = new Frame("BorderLayout"); f.setLayout(new BorderLayout()); f.add("North",new Button("North")); f.add("South",new Button("South")); f.add("East",new Button("East")); f.add("West",new Button("West")); f.add("Center",new Button("Center")); f.setSize(200,200); f.setVisible(true); }}
若容器采用BorderLayout进行布局管理,在采用add()方法添加组件的时候,必须指明添加到哪个位置。
三.AWT事件处理模型在事件处理过程中,主要涉及3类对象:
Event:用户对界面操作在java语言上的描述
Event Source:事件源(事件发生的场所,通常是各个组件)
Event Handler:事件处理者(接收事件对象并对其进行处理的对象)
例:按钮监听器
import java.awt.*;import java.awt.event.*;public class TestButton { public static void main(String[] args) { Frame f1 = new Frame("Frame"); Button b = new Button("Button1"); //事件源实例化后,授权注册该类事件的监听器 b.addActionListener(new ButtonHandler());//使用addXXXListener方法来注册监听器 f1.setLayout(new FlowLayout()); f1.add(b); f1.setSize(200,200); f1.setVisible(true); }}//定义相应的事件处理类,实现与该事件相对应的借口XXXListenerclass ButtonHandler implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { System.out.println("Action occurred"); }}使用授权处理模型进行事件处理的一般方法归纳如下:
(1)对于某种类型的事件XXXEvent,要想接收并处理这类事件,必须定义相应的事件处理类,该类需要实现与该事件相对应的接口XXXListener;
class ButtonHandler implements ActionListener{}(2)事件源实例化以后,必须进行授权,注册该类事件的监听器,使用addXXXListener(XXXListener)方法来注册监听器。
Button b = new Button("Button1");//事件源实例化后,授权注册该类事件的监听器b.addActionListener(new ButtonHandler());1.事件类
(1)EventObject类:所有事件对象的基础父类
(2)java.awt.AWTEvent:与AWT有关的所有事件都由java.awt.AWTEvent类派生。
这些awt事件分为低级事件和高级事件两大类。低级事件是指基于组件和容器的事件:当一个组件上发生事件,如鼠标的进入,点击,拖放等,或者组件的窗口开关等,都是低级事件。高级事件是基于语义的事件,如在TextField中按enter键,或是选中项目列表的某一选项就触发ActionEvent事件。
1)低级事件
ContainerEvent(容器事件:组件增加/移动)
WindowEvent(窗口事件)
FocusEvent(焦点事件:焦点的获得和丢失)
KeyEvent(键盘事件)
MouseEvent(鼠标事件:鼠标单击,移动)
2)高级事件(语义事件)
ActionEvent(动作事件)
AdjustmentEvent(调节事件)
ItemEvent(项目事件:选择项目,不选择“项目改变”)
TextEvent(文本事件:文本对象改变)
2.事件监听器
3.事件适配器:EventAdapter
例:鼠标适配器
import java.awt.*;import java.awt.event.*;public class MouseClickHandler extends MouseAdapter{public void mouseClicked(MouseEvent e){//...}}4.用内部类实现事件处理
使用内部类的主要原因:
(1)一个内部类的对象可以访问外部类的成员方法和变量,包括私有成员。
(2)实现事件监听器时,采用内部类,匿名类过程非常容易实现其功能。
(3)编写事件驱动程序,内部类很方便。
5.匿名类:当一个内部类的类声明只是在创建此类对象时用了一次,而要产生的新类需继承于一个已有的父类或实现一个接口,才能考虑用匿名类。
匿名类本身没有名字,故不存在构造方法,它需要显示调用一个无参的父类的构造方法,并且重写父类的方法。
import java.awt.*;import java.awt.event.*;public class AnonyClass{private Frame f;private TextField tf;public AnonyClass(){f = new Frame("Inner class");tf = TextField(30);}public void launchFrame(){Label label = new Label("Click and drag the mouse");f.add(label,BorderLayout.NORTH);f.add(tf,BorderLayout.SOUTH);f.addMouseMotionListener(new MouseMotionAdapter(){//匿名类开始public void mouseDragged(MouseEvent e){String s = "e.getX(),"+"e.getY()";tf.setText(s);}});f.addWindowListener(new WindowAdapter(){//匿名类开始public void windowClosing(WindowEvent e){System.exit(1);}}); f.setSize(300,200);f.setVisible(true);}public static void main(String[] args){AnonyClass ac = new AnonyClass();ac.launchFrame();}}四.AWT组件库
1.基本组件的应用
按钮(Button),复选框(Checkbox),复选框组,下拉式菜单(Choice),Canvas,文本输入区(TextArea),列表(List),框架(Frame),对话框(Dialog)...
2.组件与监听器的对应关系
- 二级java程序设计--图形用户界面(1)
- 二级java程序设计--图形用户界面(2)
- Java【图形用户界面(1)】
- Java图形用户界面(1)
- java图形用户界面1
- JAVA程序设计 第六章图形用户界面设计
- Java程序设计 图形用户界面 小巫版简易计算器
- 二级java程序设计--Applet程序设计
- Java ---图形用户界面(GUI)(1)
- Swing图形用户界面程序设计
- Java图形用户界面设计1
- Java GUI(图形用户界面)
- Java 图形用户界面(GUI)
- Java GUI(图形用户界面)
- 二级java程序设计--线程
- 二级java程序设计--文件
- JAVA程序设计(15.1)----- 图形用户界面GUI 制作红绿灯~
- JAVA程序设计(15.2)----- 图形用户界面GUI 制作正玄曲线图
- 使用apidocJs快速生成在线文档
- PHP中preg_match正则表达式的使用
- WOJ1026-Game On Checkerboard
- 把easy-ui 单元格datagrid传数据到后台
- mysql 大对象类型对应大小 Blob Text
- 二级java程序设计--图形用户界面(1)
- HttpUtil
- 视频网站选择搭建主机的方法
- 加多芬为您提供完善的系统部署
- error-page配置错误页面
- windows版redis安装使用
- spring cloud服务连接超时解决方法
- 第7个Java程序,判断数字的奇偶性。
- vision应用教程中文版