java AWT教程

合集下载

Java-AWT事件处理

Java-AWT事件处理

2019/3/19
13
窗口事件处理



接口:WindowListener。 方法:打开执行windowOpened(),单击窗口右 上角关闭按钮执行windowClosing(),单击最小 化按钮执行windowIconified()和 windowDeactivated(),鼠标单击其他窗口也 会执行windowDeactivated(),由最小化恢复 会执行windowDeiconified()和 windowActivated(),当前窗口为其他窗口 时单击该窗口,也会执行windowActivated(), 窗口被关闭,则执行windowClosed(). 方法参数:WindowEvent e
2019/3/19
15
动作事件的处理(文本框)

}

ActionListener除了用于鼠标单击按钮外,单行文本框中的回车、列表框中双击 选择某个选项也可以用其处理。 import java.awt.*; import java.awt.event.*; class xx implements ActionListener{ TextField t=new TextField(“you can enter here”,35); t.addActionListener(this); //即单行文本框可以自动监听。 …………… public void actionPerformed(ActionPerformed e){ String s=t.getText(); System.out.println(s); } 注意:对于多行文本框TextArea,不能自动监听,可以添加按钮来实现检查和提 交功能。

按钮添加监听:button.addActionListener(事件处理器);

第7章_Java_awt 509修改 - 副本 (2)

第7章_Java_awt 509修改 - 副本 (2)

17
Frame类(框架)
Frame类是Container类的间接子类。当需要一个窗口时, 可使用Frame或其子类创建一个对象。窗口也是一个容器,
可以向窗口添加组件。窗口默认地被系统添加到显示器屏
幕上,因此,不允许将一个窗口添加到另一个容器中。 Frame是顶级窗口,可以显示标题,重置大小。当Frame 被关闭,将产生WindowEvent事件,Frame无法直接监听 键盘输入事件。
文字、图形、图象… 不能像标准组件一样被系统识别和承认,只起装饰作用。 不能响应用户的动作,不具有交互功能。
8
7.2 组件和容器
Java的图形用户界面的最基本组成部分是组件 (Component),组件是一个可以以图形化的方 式显示在屏幕上并能与用户进行交互的对象,例
如一个按钮,一个标签等。
给用户的技术。
目前Java主要提供了两个处理图形用户界面的类库: java.awt和javax.swing。
2
AWT:抽象窗口工具集(Abstract Windows Toolkit), 其外观取决于具体的平台,可用于Java的applet和 application。 java.awt包中包含了一个完整的类集以支持GUI程序的设 计(重量级构件),比如组件、图形等。
7 7
界面元素
容器是用来组织其他界面成分和元素的单元。
可以形成容器的层次,构筑复杂结构 Window(Frame、Applet、Dialog )
组件是图形用户界面的基本单位,它里面不再包含 其他的成分。
GUI组件是图形用户界面标准化的结果。 GUI组件的作用是完成与用户的交互。
用户自定义成分
Canvas Label TextField TextArea Scrollbar

Java游戏编程原理与实践教程课件 第2章--陈锐 夏敏捷主编

Java游戏编程原理与实践教程课件 第2章--陈锐 夏敏捷主编

2.3 Swing组件 2.3.5 列表(JList) JList组件用于定义列表,允许用户选择一个或多个项目。与JTextArea类 似,JList本身不支持滚动功能,如果要显示超出显示范围的项目,可以 将JList对象放置到滚动窗格JScrollPane 对象中,便可以为列表对象实现 滚动操作。 2.3.6 文本框(JTextField和JPasswordField) JTextField组件用于创建文本框。文本框是用来接受用的单行文本信息输 入的区域。通常文本框用于接受用户信息或其他文本信息的输入。当用 户输入文本信息后,如果为JTextField对象添加事件处理,按回车键会激 发一定的动作。
2.3 Swing组件 2.3.7 面板(JPanel) JPanel组件定义的面板实际上是一种容器组件,用来容纳各种其他轻量 级的组件。此外,用户还可以用这种面板容器绘制图形。 【例2-4】利用JPanel设计一个程序。界面如图2-4所示。
2.3 Swing组件 2.3.8 表格(JTable) 表格是Swing新增加的组件,主要功能是把数据以二维表格的形式显示出 来。 2.3.9 框架(JFrame) 框架是Swing GUI应用程序的主窗口,窗口有边界、标题、关闭按钮等。 JFrame类是java.awt包中Frame类的子类,其及子类创建的对象是窗体, 对象(窗体)是重量容器;不能把组件直接添加到swing窗体中,其含有 内容面板容器,应该把组件添加到内容面板中;不能为swing窗体设置布 局,而应当为swing窗体的内容面板设置布局。 Swing窗体通过getContentPane()方法,获得JFrame的内容面板,再对其 加入组件: JFrame frame=new JFrame(); Cotainer ct= frame.getContentPane();//获取内容面板容器 ct.add(childComponent); //内容面板容器加入组件

java图形用户界面设计教程

java图形用户界面设计教程

第4章图形用户界面设计本章要点● Java图形用户界面设计的基本知识●布局管理器的应用● Java常用图形用界面设计组件的应用● Java常用组件事件处理的应用4.1 认识AWT包和Swing包用户界面是计算机用户与软件之间的交互接口。

一个功能完善,使用方便的用户界面可以使软件的操作更加简单,使用户与程序之间的交互更加有效。

因此图形用户界面(graphics user interface,GUI)的设计和开发已经成为软件开发中的一项重要的工作。

Java语言提供的开发图形用户界面(GUI)的功能包括AWT(Abstract Window Toolkit)和Swing两部分。

这两部分功能由Java的两个包来完成-awt和swing。

虽然这两个包都是用于图形用户界面的开发,但是它们不是同时被开发出来了。

awt包是最早被开发出来的。

但是使用awt包开发出来的图形用户界面并不完美,在使用上非常的不灵活。

比如awt包所包含的组件,其外观是固定的,无法改变,这就使得开发出来的界面非常死板。

这种设计是站在操作系统的角度开发图形用户界面,主要考虑的是程序与操作系统的兼容性。

这样做的最大问题就是灵活性差,而且程序在运行时还会消耗很多系统资源。

由于awt包的不足表现,SUN公司于1998年针对它存在的问题,对其进行了扩展,开发出了Swing,即swing包。

但是,SUN公司并没有让swing包完成替代awt包,而是让这两个包共同存在,互取所需。

awt包虽然存在缺点,但是仍然有可用之处,比如在图形用户界面中用到的布局管理器、事件处理等依然采用的是awt包的内容。

Java有两个主要类库分别是Java包和Javax包。

在Java包中存放的是Java语言的核心包。

Javax包是Sun公司提供的一个扩展包,它是对原Java包的一些优化处理。

swing包由于是对awt包的扩展和优化,所以是存放在Javax包下的,而awt包是存放在Java包下的。

Java第06章--1(AWT与Swing)

Java第06章--1(AWT与Swing)

• • 视图(view):它专门负责组件的绘制工作,主要涉及 paint()方法。MVC设计范式的最大优点是一个模型可以 有多个视图,每个视图是一个不同侧面但内容却是完整的。 • 一个模型的几个视图都是从不同侧面、用完整的内容来描 述同一个模型。当模型的控制器要修改其内容时,均会通 知这每个视图,它们都会自动地更新自己的视图显示。 • • 控制器(controller):专门负责管理和处理组件所接 收到的事件,这些事件可能来自用户的操作。如键盘输入、 鼠标点击和拖放等,也可能来自系统,如系统计时器发出 的事件。 • 视图和其控制器之间的通信不仅频繁且非常复杂,因此 JFC系统把两者封装成一个整体。
• • 模型(model):模型负责获取和管理组件的状态,用户若 需要询问组件的状态时,实际上是询问该组件的模型。 • 若要询问Swing型按钮组件(JButton 类的一个对象)的状 态,可调用JButton 类的父类javax.swing.AbstractButton所 提供的isSelected()方法,它定义为: – public boolean isSelected() { ... } – 该方法返回一个逻辑值,若为true则该按钮组件被压下,反 之返回false则按钮是松开状态。 • javax.swing包中的各种组件,对于描述该组件状态和内容的 模 型 都 是 用 以 Model 结 尾 的 接 口 实 现 , 例 如 , 对 于 按 钮 在 javax.swing包中有一个如下定义的接口: – public interface ButtonModel extends ItemSelectable { ... } • 每个JButton类的对象都保存着一个表示该按钮组件模型的对 象,调用其父类AbstractButton的方法就可以得到它,即: – JButton b = new JButton( "确定" );

Java面向对象程序设计案例教程课件:图形用户界面开发与事件处理

Java面向对象程序设计案例教程课件:图形用户界面开发与事件处理

《Java面向对象程序设计案例教程》
7.2 Swing基础
• Swing组件是Java语言提供的第二代GUI设计工 具包,它以AWT为基础,在AWT内容的基础上 新增或改进了一些GUI组件,使得GUI程序功能 更强大,设计更容易、更方便。
• Swing与AWT有以下不同。
• (1) Swing是完全用Java语言编写的,所以称 Swing组件是轻量级组件,没有本地代码,不依 赖操作系统的支持,比AWT构件具有更强的实 用性。Swing在不同的平台表现一致,并且有能 力提供本地窗口系统不支持的其他特性。
《Java面向对象程序设计案例教程》 • Swing的类层次结构如图所示:
《Java面向对象程序设计案例教程》
• 3. 简单的范例 • 一个简单的Swing GUI应用程序。该程序生成一个窗
口, • 窗口中有一个标签,用于显示输出。 • (1) 程序代码: • 1. import java.awt.* ; • 2. import javax.swing.* ; • 3. public class SwingDemo • 4. { • 5. public static void main(String args[]) • 6. { • 7. JFrame fm = new JFrame("第一个Windows程序") ; • 8. JLabel label = new JLabel("这是第一个GUI程序") ;
• 教材例题7-12 利用组合框显示、选取地名。
• 教材例题8.2 ,例题8.3用不同方法生成JFrame窗口
《Java面向对象程序设计案例教程》
• 7.3.2 面板容器JPanel
• 面板JPanel也是Java中常用到的容器之一,面板是一种透明 的容器,既没有标题,也没有边框,就像一块透明的玻璃。 与JFrame不同,它不能作为最外层的容器单独存在,它首 先必须作为一个构件放置到其他容器中,然后再把它作为容 器,把其他构件放到其中。

第9章Java Swing图形用户界面-Java面向对象程序设计教程-微课视频-程杰-清华大学出版社

第9章Java Swing图形用户界面-Java面向对象程序设计教程-微课视频-程杰-清华大学出版社
第9章Java Swing图形用户界面
9.1 Java Swing概述 9.2 JFrame窗口 9.3布局管理器 9.4 常用控件 9.5事件处理机制 9.6 JDialog对话框 9.7 应用实例:打地鼠小游戏
通过GUI(Graphic User Interface,图形用户界 面),用户与程序之间可以方便地进行交互。Java 的java.awt包,即Java抽象窗口工具包(Abstract Window Toolkit,AWT)提供了许多用来设计GUI 的组件类。Java早起进行用户界面设计时,主要使 用java.awt包提供的类,如Button(按钮)、 TextField(文本框)和List(列表)等。JDK1.2 推出后,增加了一个新的javax.swing包,该包提 供了功能更为强大的用来设计GUI的类。
Javax.swing包提供了Box类,该类也是Container
类的一个子类,创建的容器称为一个盒式容器,盒 式容器的默认布局是盒式布局,而且不允许更改盒 式容器的布局。因此,在策划程序的布局时,可以 利用容器的嵌套,将摸个容器嵌入几个盒式ng中提供了一个更加强大的布 局——弹簧布局SpringLayout。利用该布局管理器
管理组件,当改变窗体的大小时,能够在不改变组 件间相对位置的前提下自动调整组件的大小。
9.4.1 标签JLable 9.4.2 文本框JTextField 9.4.3 按钮JButton 9.4.4 菜单JMenu 9.4.5文本区JTextArea 9.4.6下拉列表JList 9.4.7表格JTable 9.4.8 树JTree
Public void keyTyped(KeyEvent),键盘按键被输入 事件。
无论用户界面设计的如何美观别致,最重要的一点 是知道这些组件能做什么,如单击一个“打开文件” 按钮,我们希望打开的是文件对话框,而不希望程 序没有任何响应。Java提供了事件模型,使Swing

Java语言程序设计基础教程课件(第6章)

Java语言程序设计基础教程课件(第6章)
通过滚动条来观察每个组件
只能向滚动面板添加一个组件
构造方法
ScrollPane() ScrollPane(int a)
a的取值: 1)SCROLLBARS_ALWAYS 、
2)SCROLLBARS_AS_NEEDED、
3)SCROLLBARS_NEVER
P134【例6-3】使用ScrollPane容器
con.add(String s,Component b) con.add(Component b,String s)

card.show(con,s) card.first(con) st(con) card.previous(con) card.next(con)
Container(容器)的子类,属内层容器
在外层容器内部实现分块布局
默认布局是FlowLayout布局
常用方法同Frame
java.awt.ScrollPane类——滚动面板
P133 【例6-2】使用Panel容器
6.3.3 ScrollPane
java.awt.ScrollPane——滚动面板
但是它的主要功能是容纳其它组件和容器
容器通过add()方法向容器中添加组件。
有三种类型的常用容器:
Frame、 Panel、 ScrollPane。
6.3.1 Frame
Frame类是Container类的间接子类
可以向窗口添加组件
顶层容器,不容许被添加
默认布局是BorderLayout
方法说明
绘制组件
重绘组件 设置组件的大小和位置 设置组件可见性 设置鼠标指向组件时的光 标形状。 将变化后的界面显示出来 更新组件

SWING教程

SWING教程

javaswing教程:JAVA教程 第 7讲 Swing用户界面设计疯狂代码 / ĵ:http://Java/Article51917.htmlD X j`/^@7.1 Swing介绍JAVA中文站社区门户 G2m2`wx1BV&A!]v;?-DB7.1.1 介绍Len}w$tJAVA中文站社区门户:w8|@}#T7J2J 第 5讲中我们学习了AWTAWT是Swing基础Swing产生主要原因就是AWT不能满足图形化用户界面发展需要os7Wg5X7C)OAWT设计初衷是支持开发小应用简单用户界面例如AWT缺少剪贴板、打印支持、键盘导航等特性而且原来AWT甚至不包括弹出式菜单或滚动窗格等基本元素B-Jq#t} }~%Py,wJAVA中文站社区门户;Q*}~VP.F\F~S 此外AWT还存在着严重缺陷人们使AWT适应基于继承、具有很大伸缩性事件模型基于同位体体系结构也成为其致命弱点JAVA中文站社区门户%SEm0uKvXv;yTu*R/Mp 随着发展需要Swing出现了Swing组件几乎都是轻量组件和重量组件相比没有本地对等组件不像重量组件要在它们自己本地不透明窗体中绘制轻量组件在它们重量组件窗口中绘制JAVA中文站社区门户h3r z/I,]:O`JAVA中文站社区门户o*pDnO 这讲我们讲下基本Swing组件使用思路方法和使用Swing组件创建用户界面初步思路方法w]'~5L#d7^4aJ\~X Bh^?sh)so Swing是由100%纯Java实现Swing组件是用Java实现轻量级( light-weight)组件没有本地代码不依赖操作系统支持这是它和AWT组件最大区别由于AWT组件通过和具体平台相关对等类(Peer)实现因此Swing比AWT组件具有更强实用性Swing在区别平台上表现致并且有能力提供本地窗口系统不支持其它特性+l}'Cyc7R.a{0U`Vl1Pw Swing采用了种MVC设计范式即"模型-视图-控制"(Model-View-Controller)其中模型用来保存内容视图用来显示内容控制器用来控制用户输入^lv1n+g[H&{JAVA中文站社区门户TvP,s'u2qRh Swing外观感觉采用可插入外观感觉(Pluggable Look and FeelPL&F)5rw'ett{4KP~i[p o 在AWT组件中由于控制组件外观对等类和具体平台相关使得AWT组件总是只有和本机相关外观Swing使得在个平台上运行时能够有区别外观用户可以选择自己习惯外观以下 3幅图是在同个操作系统下得到区别外观&j\-y'U6s.Y5jb`?~&WuCI xEMetal风格 JAVA中文站社区门户6~1A7z't-v5v rJAVA中文站社区门户#\%f7uXijcJAVA中文站社区门户N([eLiOMot风格JAVA中文站社区门户`r|.O7ENMO c6KfZ!Z8s S}/ZaLoo2k;Z$V:QWindows风格JAVA中文站社区门户Qmt2eL H,^n2g1ODzT[7.1.2 Swing类层次结构'Z5@D8wJ`JAVA中文站社区门户0V&?[#n*w"MQ 在javax.swing包中定义了两种类型组件:顶层容器(JFrameJAppletJDialog和JWindow)和轻量级组件Swing组件都是AWTContainer类直接子类和间接子类JAVA中文站社区门户%q*{0rxy-n_Q"S#Q5F M[9E-kz(oc ponentJAVA中文站社区门户 Q(ZQ$XWZL-{ -java.awt.Container{,cH8J}gK+X| -java.awt.WindowMG)tdZ ?fd -java.awt.Frame-javax.swing.JFrame`&|h t([e@ -javax.Dialog-javax.swing.JDialogG6utgX.y-M -javax.swing.JWindowJAVA中文站社区门户Ghm7nu+}-Yfec -java.awt.Applet-javax.swing.JAppletJAVA中文站社区门户6s.~W YGE2q -javax.swing.BoxQ-SEy)V*xw -javax.swing.JcomponetqwF$Bw]4iTL L(p`BbX(O Swing包是JFC(Java Foundation Classes)部分由许多包组成如下表:DJV8Y3b.S{JAVA中文站社区门户H3aB1i*[-VJAVA中文站社区门户[i9M,JTA[[,bJAVA中文站社区门户h!g)t'LL 包 描述 JAVA中文站社区门户e&mKCf:H8gx Com.sum.swing.plaf.mot 用户界面代表类它们实现Mot界面样式 JAVA中文站社区门户,e2eH B3k6VYbCom.sum.java.swing.plaf.windows 用户界面代表类它们实现Windows界面样式 JAVA中文站社区门户K |2w*zbL Javax.swing Swing组件和使用工具4o D?!ia Javax.swing.border Swing轻量组件边框 JAVA中文站社区门户]ilE KG Javax.swing.colorchooser JcolorChooser支持类/接口yN5a t@H8\?+I Javax.swing.event 事件和侦听器类X%y-W `'z/Pn(@i'Lc Javax.swing.filechooser JFileChooser支持类/接口'{EK&HO3@*XT#Z[ Javax.swing.pending 未完全实现Swing组件5X)@!Ck4` Javax.swing.plaf 抽象类定义UI代表行为 JAVA中文站社区门户2e,R@2qRh e Javax.swing.plaf.basic 实现所有标准界面样式公共功能基类 JAVA中文站社区门户 ["Cyt)^(a Javax.swing.plaf.metal 用户界面代表类它们实现Metal界面样式 JAVA中文站社区门户:G0{9J){{CC/Z Javax.swing.table Jtable组件 JAVA中文站社区门户1ZZ*TMY1K8U Javax.swing.text 支持文档显示和编辑 JAVA中文站社区门户cu,e2prO Javax.swing.text.html 支持显示和编辑HTML文档_(W[G5aolJ Javax.swing.text.html.parser Html文档分析器 JAVA中文站社区门户6O8d)D^g,z Javax.swing.text.rtf 支持显示和编辑RTF文件 JAVA中文站社区门户:m?|"A.|4G~.@"Oh Javax.swing.tree Jtree组件支持类\#Ip1j }0| Javax.swing.undo 支持取消操作 JAVA中文站社区门户2} B^6IX7X/M'K/o'hs]:s0Wh)O{KE"x8wJAVA中文站社区门户w8{ [D]0yk (在jdk1.3中第、第 2和pending包没有了增加了plaf.multi包主要功能:给缺省L&F加上附加L&F例如个MultiButtonUI例子可以同时处理MotButtonUI和AudioButtonUI.)JAVA中文站社区门户Jh2W+]+c6f7x Q2P AJAVA中文站社区门户B/H-L-g.] JY swing包是Swing提供最大包它包含将近100个类和25个接口几乎所有Swing组件都在swing包中只有JtableHeader和 JtextComponent是例外它们分别在swing.table和swing.text中JAVA中文站社区门户(ch7PQk1E]0{8dc o swing.border包中定义了事件和事件监听器类和AWTevent包类似它们都包括事件类和监听器接口2\^2Fa3ZNQ swing.pending包包含了没有完全实现Swing组件v%r\W7h9kc7a swing.table包中主要包括了表格组建(JTable)支持类JAVA中文站社区门户!A@0m;q%E0Zk.i swing.tree同样是JTree支持类JAVA中文站社区门户Mc`_'R5u$u swing.text、swing.text.html、swing.text.html.parser和swing.text.rtf都是用于显示和编辑文档包JAVA中文站社区门户\^4D:pm)\a:Z?/BhHs&f7.1.3 Swing组件多样化JAVA中文站社区门户d-Z9{e#_PlX!zJAVA中文站社区门户 b2n)C(Z9b)PL4u Swing是AWT扩展它提供了许多新图形界面组件Swing组件以"J"开头除了有和AWT类似按钮(JButton)、标签(JLabel)、复选框(JCheckBox)、菜单(JMenu)等基本组件外还增加了个丰富高层组件集合如表格(JTable)、树(JTree) JAVA中文站社区门户uto2s1E7.1.4 MVC(Model-View-Control)体系结构JAVA中文站社区门户&k?$fWOJAVA中文站社区门户hkY#e6D7^ Swing胜过AWT主要优势在于MVC体系结构普遍使用在个MVC用户界面中存 3个通讯对象:模型、视图和Control控件模型是指定逻辑表示法视图是模型可视化表示法而Control控件则指定了如何处理用户输入当模型发生改变时它会通知所有依赖它视图视图使用Control控件指定其相应机制JAVA中文站社区门户rIF0\q0ug,[_:K6s`XPA 为了简化组件设计工作在Swing组件中视图和Control控件两部分合为体每个组件有个相关分离模型和它使用界面(包括视图和Control控件)比如按钮JButton有个存储其状态分离模型ButtonModel对象组件模型是自动设置例如般都使用JButton 而不是使用ButtonModel 对象另外通过Model类子类或通过实现适当接口可以为组件建立自己模型把数据模型和组件联系起来用Model( )思路方法JAVA中文站社区门户1O[LKA2S^S AS(J&l MVC是现有编程语言中制作图形用户界面种通用思想其思路是把数据内容本身和显示方式分离开这样就使得数据显示更加灵活多样比如某年级各个班级学生人数是数据则显示方式是多种多样可以采用柱状图显示也可以采用饼图显示也可以采用直接数据输出因此在设计时候就考虑把数据和显示方式分开对于实现多种多样显示是非常有帮助"qO!zv;h:PRGe4[T,~` z#T`.kV){7.1.5 可存取性支持JAVA中文站社区门户[tV`(DJAVA中文站社区门户?"Z;Z,WoIy1t%n\y 所有Swing组件都实现了Accessible接口提供对可存取性支持使得辅助功能如屏幕阅读器能够十分方便从Swing组件中得到信息JAVA中文站社区门户S|`_:cJAVA中文站社区门户,L~:OXp7.1.6 支持键盘操作JAVA中文站社区门户-[a1\lF LI7FRJAVA中文站社区门户0z1Q#r[#r 在Swing组件中使用JComponent类registerKeyboardAction()思路方法能使用户通过键盘操作来替代鼠标驱动GUI上Swing组件相应动作有些类还为键盘操作提供了更便利思路方法JAVA中文站社区门户N Hn:WB'E"T$Vs^JAVA中文站社区门户y#C X;b:X:A 其实这就相当于热键使得用户可以只用键盘进行操作JAVA中文站社区门户N$E$mn};Z!k#Q!sRcq7.1.7 设置边框C#vtJp0f7eUJAVA中文站社区门户9c4kI@'Zr)]v 对Swing组件可以设置个和多个边框Swing中提供了各式各样边框供用户选用也能建立组合边框或自己设计边框种空白边框可以增大组件协助布局管理器对容器中组件进行合理布局C#kf9zb*jG'ay$z v)FVX.V7.1.8 使用图标(Icon)JAVA中文站社区门户9s2`7eHt"F4GJAVA中文站社区门户x!O)O6`-k 和AWT部件区别许多Swing组件如按钮、标签除了使用文字外还可以使用图标修饰自己7O&FF"mCJAVA中文站社区门户"J(Cnl^7e+\例7.1:JAVA中文站社区门户WFyC0KGk import javax.swing.*; //引入Swing包名QB zT*v }y //import com.sun.java.swing.*;o9E&e5S?y,n //使用JDK 1.2 Beta 4版和所有Swing 1.1 Beta 3JAVA中文站社区门户2o'| ^)G7@.c //的前版本,引入Swing包名用此思路方法JAVA中文站社区门户x)L,X[|9qL import java.awt.*;!a(]7` rM(TLg.jdX import java.awt.event.*;JAVA中文站社区门户W1~oeVEX V public SwingApplication {JAVA中文站社区门户.t&?2t5X(`v2l private String labelPrefix = "Number of button clicks: ";K:sOq*n private numClicks = 0; //计数器计算点击次数JAVA中文站社区门户+I5^\'RAd,k public Component createComponents {JAVA中文站社区门户/vL#b-hj%M final JLabel label = JLabel(labelPrefix + "0 ");JAVA中文站社区门户!@PZ0Vg:}_;VE.LJAVA中文站社区门户OaBWv9| JButton button = JButton("I'm a Swing button!");JAVA中文站社区门户Jb6jf8uR'[ button.Mnemonic(KeyEvent.VK_I); //设置按钮热键为'I'6P.f'eI!Pr button.addActionListener( ActionListener {JAVA中文站社区门户R|JGYK"p"t6p public void actionPerformed(ActionEvent e) {JAVA中文站社区门户T.I#z3NqcI;b^*U numClicks;CGx-UbG;Vy8m&c label.Text(labelPrefix + numClicks);JAVA中文站社区门户_ku*GZh#B hfyw ^ //显示按钮被点击次数JAVA中文站社区门户!}4f$J L'_3@^2NB }JAVA中文站社区门户O"I~~2`\7Bq });ZBv*H_nO}KTKQ belFor(button);4{1N8m}'_s@tqjIbst /* 在顶层容器及其内容的间放置空间常用办法是把内容添加到Jpanel上而Jpanel本身没有边框*/!E%wdnp5Le:b2C&kZl)b,G;{/Pr#b JPanel pane = JPanel;JAVA中文站社区门户d+H%bQ(K{ pane.Border(BorderFactory.createEmptyBorder(| l0jX}6jzyzQ 30, //top`9\'Y+@4Ew^A7gjZ 30, //left9m{:ct]Ha 10, //bottom@.y:t_/i6@V 30) //right*Wb F \;qZoP );JAVA中文站社区门户/Fff EuPhqC yout( GridLayout(0, 1)); //单列多行JAVA中文站社区门户j"fd?.B-|mJ pane.add(button);JAVA中文站社区门户I;~E"Y.?D6d"AS { pane.add(label);8\ ~G q7JaS'y5B-Q pane;_~)iNoG8W` }JAVA中文站社区门户9W%o4](IpvLPJAVA中文站社区门户*KdwdDN public void (String args) {JAVA中文站社区门户D2cy(aQ/b\ZP try {[#_ t e!u5E9bgP5i UIManager.LookAndFeel(JAVA中文站社区门户u-]#\0lF'o2G,e T UIManager.getCrossPlatformLookAndFeelClassName);JAVA中文站社区门户Ex/A2sO } //设置窗口风格7|kN~dHE } catch (Exception e) { }W'qD`:e HzJF%yu6wO`x2Ug //创建顶层容器并添加内容.JAVA中文站社区门户oo6Ksibs JFrame frame = JFrame("SwingApplication");t2DhHr$j SwingApplication app = SwingApplication;~|up;aQ+k Component contents = app.createComponents;oSp)wX frame.getContentPane.add(contents, BorderLayout.CENTER);JAVA中文站社区门户?;A R2~N[*Q"\+H&J.IK&uj ` //窗口设置结束开始显示"s1pwFg%n2wP frame.addWindowListener( WindowAdapter {"c%F\F.z+zW //匿名类用于注册监听器JAVA中文站社区门户4bu+NzKH public void windowClosing(WindowEvent e) {-EDQ.zq2w .exit(0);JAVA中文站社区门户wd'J9c.p@H }hI*UO?8N });JAVA中文站社区门户OV#I^\^S9V frame.pack;/r Z)[8Ge7Z1y frame.Visible(true);JAVA中文站社区门户S&ks%|'i;L$[$` y1r x~ }7y3\sMpjrO }aEx2Ly.i ]&C%AWi)I!v:AS4c(e 查看运行结果ye3y-r0O;f"mJAVA中文站社区门户SV;]%}0jN7.1.9 Swing结构介绍"z:tf s;s:kJAVA中文站社区门户jfeUlU Swing设计般可按照下列流程进行:8V@ wkC 1. 引入Swing包muS%eA1n0if |-z 2. 选择"外观和感觉"KB&rk&Q;D6~S'kF0u 3. 设置顶层容器FU!^ rDAS 4. 设置按钮和标签JAVA中文站社区门户_*U)^ yK5[5s 5. 向容器中添加组件l]3N^*e 6. 在组件周围添加边界JAVA中文站社区门户-|z A#GHDa 7. 进行事件处理+mA\alo`%i6SJAVA中文站社区门户Na-kv"c T 例子7.1介绍说明了Swing中设计结构以及最基本组件Button和Label使用方法在中我们建立个Swing风格窗口并在其中添加个按钮中保存个计数器以计算按钮被点击次数并在每次点击的后用个Label显示在这个中我们可以看到Swing组件使用和AWT组件使用基本思路方法致使用事件处理机制也完全相同这些在前面AWT中已经讲过不再赘述TAG: Swing swing 教程 设计 用户界面31/3123>2009-1-12 1:13:34疯狂代码 /。

java语言中awt和swing组件的基本用法

java语言中awt和swing组件的基本用法

java语言中awt和swing组件的基本用法Java语言中AWT和Swing组件是用于创建图形用户界面(GUI)的工具。

AWT(Abstract Window Toolkit)是Java最早提供的GUI工具包,而Swing是在AWT基础上进行了扩展和改进的高级GUI工具包。

本文将介绍AWT和Swing组件的基本用法。

一、AWT组件的基本用法AWT组件是Java中最基本的GUI组件,它们在不同的平台上都能够保持一致的外观和行为。

下面是AWT常用组件的基本用法:1. Frame(窗口):使用Frame类可以创建一个基本的窗口。

可以调用setTitle()方法设置窗口标题,setSize()方法设置窗口大小,setVisible()方法显示窗口。

例如:```javaFrame frame = new Frame("My Window");frame.setSize(400, 300);frame.setVisible(true);```2. Panel(面板):Panel是一个容器,用于存放其他组件。

可以使用add()方法将其他组件添加到Panel中。

例如:```javaPanel panel = new Panel();Button button = new Button("Click Me");panel.add(button);```3. Button(按钮):Button用于触发特定的动作。

可以使用addActionListener()方法为按钮添加动作监听器。

例如:```javaButton button = new Button("Click Me");button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.out.println("Button Clicked");}});```4. Label(标签):Label用于显示文本信息。

java中awt的常用的用法

java中awt的常用的用法

一、概述awt的作用1.1 awt的全称1.2 awt的定位和作用1.3 awt的优点和局限二、awt常用的组件2.1 按钮(Button)2.2 标签(Label)2.3 文本框(TextField)2.4 文本区域(TextArea)2.5 列表(List)2.6 下拉列表(Choice)2.7 复选框(Checkbox)2.8 单选按钮(RadioButton) 2.9 滚动条(Scrollbar)2.10 对话框(Dialog)2.11 框架(Frame)三、awt的布局管理器3.1 FlowLayout3.2 BorderLayout3.3 GridLayout3.4 GridBagLayout3.5 CardLayout四、awt事件处理4.1 事件概述4.2 事件监听器4.3 事件对象4.4 事件的处理五、awt绘图5.1 绘图的基本概念5.2 绘图的步骤5.3 绘制图形5.4 绘制图像5.5 绘制文本六、awt的高级应用6.1 图形用户界面(GUI)开发 6.2 多媒体处理6.3 网络编程6.4 多线程处理七、awt的实际应用7.1 GUI程序开发7.2 窗口程序设计7.3 界面美化7.4 数据展示八、结语在Java编程中,awt(Abstract Window Toolkit)是一个用于创建图形用户界面(GUI)应用程序的基本工具包。

它提供了一系列的组件、布局管理器、事件处理和绘图功能,帮助开发者快速构建可视化的程序界面。

本文将从awt的基本组件、布局管理器、事件处理、绘图以及高级应用方面进行详细介绍。

一、概述awt的作用1.1 awt的全称awt的全称是Abstract Window Toolkit,它是Java的一个基本GUI 工具包,提供了一系列的类和方法供开发者创建、管理和展示图形用户界面。

1.2 awt的定位和作用awt的定位是作为Java的标准库,为开发者提供创建GUI界面的基本工具,充分利用面向对象的思想,让开发者能够通过简单的调用API来完成复杂的图形界面设计。

Java实用教程 第11章 AWT图形用户界面编程

Java实用教程 第11章 AWT图形用户界面编程

fr.add(p1, BorderLayout.NORTH);
// 将p1添加到窗口NORTH区域(即顶部)
Panel p2 = new Panel();
// 创建面板p2
p2.setLayout(new GridLayout(4, 5, 3, 3));
// 设置p2使用GridLayout布局
String[] name = {"7", "8", "9", "÷", "√", "4", "5", "6", "×", "%"
AWT容器
Window和Frame
Window和Frame
Window有两个子类:Frame和Dialog。Frame带有标题,而且可以调整大小。Dialog可以被移动, 但是不能改变大小。Frame有一个构造方法Frame(String title),通过它可以创建一个以参数为标题 的Frame对象。Frame的add()方法向容器中加入其他组件。Frame被创建后是不可见的,必须通过 以下步骤使它成为可见。
setLocation()、setSize()或setBounds() 方法,为它们在容器中一一定位。
布局管理器
1.流式布局管理器
FlowLayout是把组件从左向右、从上向下,一个接一个地放到容器中,组件之间的默认间隔 (水平和垂直)为5个像素,对齐方式为居中。组件的大小由布局管理器根据组件的最佳尺寸 来决定。 FlowLayout的构造方法:
, "1", "2", "3", "-", "1/x", "0", ".", "C", "+", "±"};

java swing 入门教程

java swing 入门教程

swing入门教程swing简介(2009-04-20 23:52:40)UI组件简介在开始学习Swing 之前,必须回答针对真正初学者的一个问题:什么是UI?初学者的答案是“用户界面”。

但是因为本教程的目标是要保证您不再只是个初学者,所以我们需要比这个定义更高级的定义。

所以,我再次提出这个问题:什么是UI?您可能把它定义成您按下的按钮、打字的地址栏、打开和关闭的窗口,等等,这些都是UI 的元素,但是除了在屏幕上看到的这些之外,还有更多都是UI 元素。

比如鼠标、键盘、音量、屏幕颜色、使用的字体,以及一个对象相对于另一个对象的位置,这些都包含在UI 之中。

实际上,在计算机和用户的交互之中扮演角色的任何对象都是UI 的组成部分。

这看起来足够简单,但是您应当惊讶的是,有许多人和大型公司已经为它努力了很多年。

实际上,现在有的大学专业的惟一课程就是研究这种交互。

Swing的角色Swing 是Java 平台的UI ——它充当处理用户和计算机之间全部交互的软件。

它实际上充当用户和计算机内部之间的中间人。

Swing 到底是如何做这项工作的呢?它提供了处理前面一节中描述的UI 各方面内容的机制:∙键盘:Swing 提供了捕捉用户输入的方法。

∙颜色:Swing 提供改变在屏幕上看到的颜色的方法。

∙打字的地址栏:Swing 提供了文本组件,处理所有普通任务。

音量:Swing 不太擅长。

无论如何,Swing 为您提供了创建自己的UI 所需要的所有工具MVCSwing 甚至走得更远一步,在基本的UI 原则之上又放上了一个公共的设计模式。

这个设计模式叫做模型-视图-控制器(Model-View-Controller,MVC),它试图“把角色分开”。

MVC 让负责显示的代码、处理数据的代码、对交互进行响应并驱动变化的代码彼此分离。

有点迷惑?如果我为这个设计模式提供一个现实世界的非技术性示例,它就比较容易了。

请想像一次时装秀。

Java形界面SwingJavaFX和AWT

Java形界面SwingJavaFX和AWT

Java形界面SwingJavaFX和AWT Java形界面Swing、JavaFX和AWTJava是一种广泛应用的编程语言,其强大的图形界面(GUI)库使得开发者能够创建各种各样的用户界面。

在Java中,有三种主要的GUI库,它们分别是Swing、JavaFX和AWT。

本文将详细介绍这三种GUI库的特性和使用方法。

一、SwingSwing是Java提供的一套用于构建图形界面的库,它基于AWT库进行了扩展。

Swing提供了丰富的组件和布局管理器,使得开发者能够轻松地创建漂亮和交互性强的界面。

1.1 组件Swing提供了大量的组件,包括按钮、文本框、标签、列表框、表格等。

开发者可以通过组合这些组件来构建复杂的界面。

Swing组件的特点是可定制性高,开发者可以自定义组件的外观和行为。

1.2 布局管理器Swing通过布局管理器来自动调整组件的位置和大小。

常用的布局管理器有FlowLayout、BorderLayout、GridLayout和GridBagLayout。

开发者可以根据界面的需要选择合适的布局管理器。

1.3 事件处理Swing使用事件模型来处理用户的输入和其他操作。

开发者可以为组件添加事件监听器,响应用户的操作。

事件处理是Swing应用中的重要部分,可以使界面与用户产生交互。

二、JavaFXJavaFX是Oracle推出的新一代Java GUI库。

与Swing相比,JavaFX提供了更多的现代化特性,包括动画效果、3D支持和富文本等。

2.1 UI控件JavaFX提供了一套丰富的UI控件,包括按钮、标签、文本框、下拉框等。

这些控件样式多样,并且支持CSS样式表进行自定义。

2.2 布局JavaFX使用场景图(Scene Graph)来组织界面元素。

开发者可以使用各种布局容器来构建界面,如VBox、HBox、BorderPane等。

2.3 动画效果JavaFX内置了强大的动画框架,开发者可以轻松地创建平滑的过渡效果、缩放动画和旋转动画等。

Java Swing教程

Java Swing教程

Java Swing 编程基础与进阶/art/201201/313153.htm1、概述Swing中的JApplet和JFrame/art/200907/136486.htm本文介绍JApplet和JFrame都是只包含一个组件的容器,这个组件是JRootPane的一个实例,所以JApplet和JFrame之间是互相通用的。

这几天,闲时看了一下Swing。

Swing常用的两个类,一个是JFrame窗体类,一个是JApplet小应用程序类。

其中JApplet 依赖浏览器来执行。

很多浏览器都可以支持JApplet,包括了IE,Firefox等。

不过如何用IE6来执行的话,IE6会有脚本警告。

JApplet和JFrame都是只包含一个组件的容器,这个组件是JRootPane的一个实例。

所以JApplet和JFrame之间是互相通用的。

如以下代码:package com.tntxia.test.swing.jApplet;import java.awt.BorderLayout;import java.awt.Container;import java.awt.FlowLayout;import javax.swing.ImageIcon;import javax.swing.JApplet;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.SwingConstants;public class HelloWorld extends JApplet {/****/private static final long serialVersionUID = 52493594634447013L;public void init() {Container contentPane = getContentPane();//原文如不修改,不能正常显示图标//修改后--------.URL codebase=getClass().getResource("loli.jpg");JLabel label = new JLabel(new ImageIcon(codebase));//----------修改后的程序有个毛病,既作为applet使用时,不能刷新,一旦刷新图就没了。

JAVA2实用教程-6

JAVA2实用教程-6
上一页 下一页 退 出
复旦大学IBM技术中心
13
Applet的一个简单例子(续一)
public void start() { sum=0; for (int i=1;i<=100;i++) { sum=sum+i ; } } public void stop() {} public void destroy() {} public void paint (Graphics g) { g.setColor(Color.blue) ; g.drawString("程序设计方法", 20, 60); g.setColor(Color.red) ; g.drawString( "sum= "+sum, 20, 100); } }
//例子1
import java.applet.*; ,而且类名与文件名必须相同 import java.awt.*; public class Example7_1 extends Applet
{
注意:主类必须声明为public
Button button1; Button button2; int sum; public void init() { button1=new Button("Yes"); button2=new Button("No"); add(button1); add(button2); }

}
上一页 下一页 退 出
复旦大学IBM技术中心
21
java.applet.Applet类
Applet类
– 属于 java.apple包 – 继承 extends Applet

Java程序设计教程 第7章-Java GUI编程技术

Java程序设计教程 第7章-Java GUI编程技术
Java程序设计
7.2.1 java.awt简介
7.2 java.awt编程技术
Java程序设计
7.2 java.awt编程技术
7.2.2 Component类
❖Component类是java.awt包中最核心、最基本的类。Component类是构成Java图形用 户界面的基础,大部分组件都是由该类派生出来的。Component类是一个抽象类,其 中定义了组件所具有的一般功能,可在屏幕上显示,并可与用户进行交互,其子类如 按钮、文本框等。 ❖Component类定义的方法如下: ❖基本的绘画支持:paint(), repaint(), update()等; ❖字体和颜色等外形控制:setFont(), SetForeground()等; ❖大小和位置控制:SetSize(), SetLocation()等; ❖图像处理:实现接口ImageObserver; ❖组件状态控制(SetEnable, isEnable, isVisible, isValid等。
Java程序设计
7.2 java.awt编程技术
7.2.1 java.awt简介
❖java.awt包提供很多类和接口,包括: ❖基本组件(Component):构成GUI界面的基本元素,具有坐标位置、尺寸、字体、颜 色等属性,能获得焦点、可被操作、可响应事件等。 ❖容器类组件(Container):用来盛放组件的组件等。 ❖2D图形绘制组件(Graphics):提供在组件上绘制图形的方法。 ❖布局管理器(LayoutManager):用来安排容器中组件的位置和大小。 ❖事件处理模型:用来响应图形界面组件所触发的事件。
Java程序设计
7.1 GUI编程的Java实现
7.1.2 swing

java语言中awt和swing组件的基本用法

java语言中awt和swing组件的基本用法

java语言中awt和swing组件的基本用法AWT (Abstract Window Toolkit)是Java编程语言的一套图形用户界面(GUI)组件集,它提供了创建和管理窗口、按钮、标签等图形组件的能力。

AWT组件是依赖于操作系统的本地GUI组件。

下面是使用AWT组件的基本步骤:1.导入AWT相关的类:通常在使用AWT组件之前,需要导入`java.awt`和`java.awt.event`包中的类。

2.创建一个Frame:使用`Frame`类来创建一个顶级窗口。

3.创建其他组件:使用AWT提供的组件类(如`Button`、`Label`等)来创建其他需要的组件。

4.将组件添加到Frame:使用`add()`方法将其他组件添加到Frame中。

5.设置Frame的布局:使用`setLayout()`方法设置Frame的布局方式,如`FlowLayout`、`GridLayout`等。

6.设置Frame的大小和可见性:使用`setSize()`方法设置Frame 的大小,使用`setVisible(true)`方法设置Frame可见。

7.添加事件监听器:使用`addActionListener()`方法为按钮等组件添加事件监听器。

Swing是Java编程语言中提供的一组GUI组件,它是在AWT的基础上进行了增强和扩展。

Swing组件是纯Java组件,不依赖于操作系统的本地组件,因此具有更高的可移植性和灵活性。

下面是使用Swing组件的基本步骤:1.导入Swing相关的类:通常在使用Swing组件之前,需要导入`javax.swing`包中的类。

2.创建一个JFrame:使用`JFrame`类来创建一个顶级窗口。

3.创建其他组件:使用Swing提供的组件类(如`JButton`、`JLabel`等)来创建其他需要的组件。

4.将组件添加到JFrame中:使用`add()`方法将其他组件添加到JFrame中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.2.1 事件类与AWT有关的所有事件类都由java.awt.AWTEvent类派生,它也是EventObject类的子类。

AWT事件共有10类,可以归为两大类:低级事件和高级事件。

java.util.EventObject类是所有事件对象的基础父类,所有事件都是由它派生出来的。

AWT的相关事件继承于java.awt.AWTEvent类,这些AWT事件分为两大类:低级事件和高级事件,低级事件是指基于组件和容器的事件,当一个组件上发生事件,如:鼠标的进入,点击,拖放等,或组件的窗口开关等,触发了组件事件。

高级事件是基于语义的事件,它可以不和特定的动作相关联,而依赖于触发此事件的类,如在TextField中按Enter键会触发ActionEvent事件,滑动滚动条会触发AdjustmentEvent事件,或是选中项目列表的某一条就会触发ItemEvent事件。

◇低级事件ComponentEvent(组件事件:组件尺寸的变化,移动)ContainerEvent(容器事件:组件增加,移动)WindowEvent(窗口事件:关闭窗口,窗口闭合,图标化)FocusEvent(焦点事件:焦点的获得和丢失)KeyEvent(键盘事件:键按下、释放)MouseEvent(鼠标事件:鼠标单击,移动)◇高级事件(语义事件)ActionEvent(动作事件:按钮按下,TextField中按Enter键)AdjustmentEvent(调节事件:在滚动条上移动滑块以调节数值)ItemEvent(项目事件:选择项目,不选择"项目改变")TextEvent(文本事件,文本对象改变)5.2.2 事件监听器每类事件都有对应的事件监听器,监听器是接口,根据动作来定义方法。

例如,与键盘事件KeyEvent相对应的接口是:public interface KeyListener extends EventListener {public void keyPressed(KeyEvent ev);public void keyReleased(KeyEvent ev);public void keyTyped(KeyEvent ev);}注意到在本接口中有三个方法,那么java运行时系统何时调用哪个方法?其实根据这三个方法的方法名就能够知道应该是什么时候调用哪个方法执行了。

当键盘刚按下去时,将调用keyPressed( )方法执行,当键盘抬起来时,将调用keyReleased( )方法执行,当键盘敲击一次时,将调用keyTyped( )方法执行。

又例如窗口事件接口:public interface WindowListener extends EventListener{public void windowClosing(WindowEvent e);//把退出窗口的语句写在本方法中public void windowOpened(WindowEvent e);//窗口打开时调用public void windowIconified(WindowEvent e);//窗口图标化时调用public void windowDeiconified(WindowEvent e);//窗口非图标化时调用public void windowClosed(WindowEvent e);//窗口关闭时调用public void windowActivated(WindowEvent e);//窗口激活时调用public void windowDeactivated(WindowEvent e);//窗口非激活时调用}AWT的组件类中提供注册和注销监听器的方法:◇注册监听器:public void add (listener);◇注销监听器:public void remove (listener);例如Button类:(查API)public class Button extends Component {……public synchronized void addActionListener(ActionListener l);public synchronized void removeActionListener(ActionListener l);……}5.2.3 AWT事件及其相应的监听器接口(1)5.2.3 AWT事件及其相应的监听器接口(2)例5.10说明事件处理模型的应用。

例5.10import java.awt.*;import java.awt.event.*;public class ThreeListener implements MouseMotionListener,MouseListener,WindowListener { //实现了三个接口private Frame f;private TextField tf;public static void main(String args[]){ThreeListener two = new ThreeListener();two.go(); }public void go() {f = new Frame("Three listeners example");f.add(new Label("Click and drag the mouse"),"North");tf = new TextField(30);f.add(tf,"South"); //使用缺省的布局管理器f.addMouseMotionListener(this); //注册监听器MouseMotionListenerf.addMouseListener(this); //注册监听器MouseListenerf.addWindowListener(this); //注册监听器WindowListenerf.setSize(300,200);f.setVisible(true);}public void mouseDragged (MouseEvent e) {//实现mouseDragged方法String s = "Mouse dragging : X="+e.getX()+"Y = "+e.getY();tf.setText(s);}public void mouseMoved(MouseEvent e){}//对其不感兴趣的方法可以方法体为空public void mouseClicked(MouseEvent e){}public void mouseEntered(MouseEvent e){String s = "The mouse entered";tf.setText(s);}public void mouseExited(MouseEvent e){String s = "The mouse has left the building";tf.setText(s);}public void mousePressed(MouseEvent e){}public void mouseReleased(MouseEvent e){ }public void windowClosing(WindowEvent e) {//为了使窗口能正常关闭,程序正常退出,需要实现windowClosing方法System.exit(1);}public void windowOpened(WindowEvent e) {}//对其不感兴趣的方法可以方法体为空public void windowIconified(WindowEvent e) {}public void windowDeiconified(WindowEvent e) {}public void windowClosed(WindowEvent e) {}public void windowActivated(WindowEvent e) { }public void windowDeactivated(WindowEvent e) {}}上例中有如下几个特点:1.可以声明多个接口,接口之间用逗号隔开。

……implements MouseMotionListener, MouseListener, WindowListener;2.可以由同一个对象监听一个事件源上发生的多种事件:f.addMouseMotionListener(this);f.addMouseListener(this);f.addWindowListener(this);则对象f 上发生的多个事件都将被同一个监听器接收和处理。

3.事件处理者和事件源处在同一个类中。

本例中事件源是Frame f,事件处理者是类ThreeListener,其中事件源Frame f是类ThreeListener的成员变量。

4.可以通过事件对象获得详细资料,比如本例中就通过事件对象获得了鼠标发生时的坐标值。

public void mouseDragged(MouseEvent e) {String s="Mouse dragging :X="+e.getX()+"Y="+e.getY();tf.setText(s);}Java语言类的层次非常分明,因而只支持单继承,为了实现多重继承的能力,Java用接口来实现,一个类可以实现多个接口,这种机制比多重继承具有更简单、灵活、更强的功能。

在AWT中就经常用到声明和实现多个接口。

记住无论实现了几个接口,接口中已定义的方法必须一一实现,如果对某事件不感兴趣,可以不具体实现其方法,而用空的方法体来代替。

但却必须所有方法都要写上。

5.2.4 事件适配器Java语言为一些Listener接口提供了适配器(Adapter)类。

可以通过继承事件所对应的Adapter类,重写需要方法,无关方法不用实现。

事件适配器为我们提供了一种简单的实现监听器的手段, 可以缩短程序代码。

但是,由于java的单一继承机制,当需要多种监听器或此类已有父类时,就无法采用事件适配器了。

1.事件适配器--EventAdapter下例中采用了鼠标适配器:import java.awt.*;import java.awt.event.*;public class MouseClickHandler extends MouseAdaper{public void mouseClicked(MouseEvent e) //只实现需要的方法{ ……}}java.awt.event包中定义的事件适配器类包括以下几个:1.ComponentAdapter( 组件适配器)2.ContainerAdapter( 容器适配器)3.FocusAdapter( 焦点适配器)4.KeyAdapter( 键盘适配器)5.MouseAdapter( 鼠标适配器)6.MouseMotionAdapter( 鼠标运动适配器)7.WindowAdapter( 窗口适配器)2. 用内部类实现事件处理内部类(inner class)是被定义于另一个类中的类,使用内部类的主要原因是由于:◇一个内部类的对象可访问外部类的成员方法和变量,包括私有的成员。

相关文档
最新文档