(精品)Java语言程序设计第十二章.ppt
《(精品)Java语言程序设计第十二章.ppt》由会员分享,可在线阅读,更多相关《(精品)Java语言程序设计第十二章.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java面向对象程序设计面向对象程序设计第第12章章 Swing程序设计基础程序设计基础1本章主要内容本章主要内容l一个简单的一个简单的Swing实例实例lGUI开发工具包:开发工具包:Swing与与AWTl事件与监听器事件与监听器lSwing容器容器l布局管理器布局管理器lSwing常用组件常用组件JLabel(标签)、(标签)、JTextField(文本框)、(文本框)、JTextArea(编辑框编辑框)、JButton(按钮)、(按钮)、JCheckBox(复选框)、(复选框)、JRadioButton(单选按钮)、(单选按钮)、JComboBox(下拉列表框)(下拉列表框)lSwing
2、高级组件高级组件菜单、对话框、表格、树菜单、对话框、表格、树2一个简单的一个简单的Swing实例实例import javax.swing.*;public class HelloWorldFrm extends JFrame public HelloWorldFrm()this.initialize();private void initialize()/初始化方法,构建窗体样式初始化方法,构建窗体样式this.setSize(400,300);this.setTitle(第一个第一个Swing实例实例);public static void main(String args)HelloWor
3、ldFrm frm=new HelloWorldFrm();frm.setDefaultCloseOperation(/设置关闭按钮效果设置关闭按钮效果JFrame.DISPOSE_ON_CLOSE);frm.setVisible(true);演示第一个窗体3窗体居中显示窗体居中显示import java.awt.*;Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();Dimension frameSize=this.getSize();if(frameSize.height screenSize.height)fr
4、ameSize.height=screenSize.height;if(frameSize.width screenSize.width)frameSize.width=screenSize.width;this.setLocation(screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);演示居中效果4GUI开发工具包:开发工具包:Swing与与AWTlJava Swing是是Java Foundation Classes(JFC)的一部)的一部分,是一个用于开发分,是一个用于开发Java图形化
5、应用程序用户界面的图形化应用程序用户界面的GUI(Graphical User Interface)开发工具包。它以)开发工具包。它以抽象窗口工具包(抽象窗口工具包(AWT)为基础使跨平台应用程序可)为基础使跨平台应用程序可以使用任何可插拔的外观风格。以使用任何可插拔的外观风格。lAWT的组件很大程度上被的组件很大程度上被Swing工具包替代。工具包替代。Swing扩扩展了展了AWT,并包含称作,并包含称作 Swing 组件的改进用户界面。组件的改进用户界面。Swing通过改进的组件而避免了通过改进的组件而避免了AWT的种种弊端:调的种种弊端:调用本地图形子系统中的底层例程,而不是依赖操作系用
6、本地图形子系统中的底层例程,而不是依赖操作系统的高层用户界面模块。基于此原因,统的高层用户界面模块。基于此原因,Swing 组件经组件经常被描述为轻量级的。常被描述为轻量级的。5事件处理事件处理用户交互用户交互事事 件件如:单击鼠标 如:按下/释放鼠标按钮 对象状态改变对象状态改变调用事件处理确定发生的事件的类型 确定生成的事件的组件 编写合适的代码处理事件 事件作用于对象。事件作用于对象。对象识别事件并做出响应,不对象识别事件并做出响应,不同的对象能识别的事件不全相同。同的对象能识别的事件不全相同。可以针对相应的事件编写相应可以针对相应的事件编写相应的代码,在事件发生时,程序执的代码,在事件
7、发生时,程序执行事件里的代码。行事件里的代码。6事件处理模型事件处理模型 源对象监听器事件 传播 事件的实例 方法 传递途径代理事件模型Swing 中的 GUI 组件适配器对象7事件分类事件分类EventObjectActionEventAdjustmentEventAWTEventItemEventTextEventContainerEventFocusEventInputEventPaintEventWindowEventKeyEventMouseEventComponentEvent8事件处理过程事件处理过程1.创建一个合适的监听器。创建一个合适的监听器。2.创建组件对象。创建组件对象。
8、3.利用组件的利用组件的add*Listener方法将监听器注方法将监听器注册到组件上。册到组件上。l这样当组件上发生相应的事件的时候,就会这样当组件上发生相应的事件的时候,就会触发监听器,监听器就会处理相应的方法来触发监听器,监听器就会处理相应的方法来处理事件。处理事件。9事件处理实例事件处理实例实现监听器接口方式实现监听器接口方式l窗口事件窗口事件public class HelloWorldFrm extends JFrame/创建实现创建实现WindowListener接口的监听器内部类接口的监听器内部类class WindowEventListener implements Wind
9、owListener public void windowOpened(WindowEvent e)System.out.println(窗口被打开窗口被打开);public void windowClosing(WindowEvent e)System.out.println(窗口关闭窗口关闭);/实现实现WindowListener监听器其它方法监听器其它方法private void initialize()this.setSize(300,200);this.setTitle(第一个第一个Swing实例实例);this.centerShow();/注册监听器注册监听器this.addWi
10、ndowListener(new WindowEventListener();10监听器接口和方法监听器接口和方法分类分类接口名接口名方法方法ActionActionListeneractionPerformed(ActionEvent)ItemItemListeneritemStateChanged(ItemEvent)Mouse MotionMouseMotionListenermouseDragged(MouseEvent)mouseMoved(MouseEvent)MouseMouseListenermousePressed(MouseEvent)mouseReleased(Mouse
11、Event)mouseEntered(MouseEvent)mouseClicked(MouseEvent)mouseExited(MouseEvent)KeyKeyListenerkeyPressed(KeyEvent)keyReleased(KeyEvent)keyTyped(KeyEvent)FocusFocusListenerfocusGained(FocusEvnet)focusLost(FocusEvent)11监听器接口和方法监听器接口和方法分类分类接口名接口名方法方法AdjustmentAdjustmentListener adjustmentValueChanged(Adju
12、stmentEvent)ComponentComponentListenercomponentMoved(ComponentEvent)componentHidden(ComponentEvent)componentResized(ComponentEvent)componentShown(ComponentEvent)WindowWindowListenerwindowClosing(WindowEvent)windowOpened(WindowEvent)windowIconified(WindowEvent)windowDeiconified(WindowEvent)windowClos
13、ed(WindowEvent)windowActivated(WindowEvent)windowDeactivated(WindowEvent)ContainerContainerListenercomponentAdded(ContainerEvent)componentRemoved(ContainerEvent)TextTextListenertextValueChanged(TextEvent)12事件处理实例事件处理实例继承监听器适配器类方式继承监听器适配器类方式l为简化编程,针对大多数事件监听器接口定义为简化编程,针对大多数事件监听器接口定义了相应的实现类了相应的实现类-事件适配
14、器类,在适配器事件适配器类,在适配器类中,实现了相应监听器接口中所有的方法,类中,实现了相应监听器接口中所有的方法,但不做任何事情。但不做任何事情。l在定义监听器类时就可以继承事件适配器类,在定义监听器类时就可以继承事件适配器类,并只重写所需要的方法。并只重写所需要的方法。public class HelloWorldFrm extends JFrame/继承继承WindowAdapter适配器类,重写需要的方法适配器类,重写需要的方法class WindowEventListener extends WindowAdapter public void windowOpened(WindowE
15、vent e)System.out.println(窗口被打开窗口被打开);public void windowClosing(WindowEvent e)System.out.println(窗口正在关闭窗口正在关闭);private void initialize()this.setSize(300,200);this.setTitle(第一个第一个Swing实例实例);this.centerShow();/注册监听器注册监听器this.addWindowListener(new WindowEventListener();13使用匿名类处理事件使用匿名类处理事件this.addWindo
16、wListener(new WindowAdapter()public void windowOpened(WindowEvent e)System.out.println(窗口被打开窗口被打开);public void windowClosing(WindowEvent e)System.out.println(窗口正在关闭窗口正在关闭););l匿名内部类的基本格式是:匿名内部类的基本格式是:new Super_Type(params_list)l其中其中 Super_Type 可以是接口,那么内部类将实现接口,也就可以是接口,那么内部类将实现接口,也就是说,此时在匿名内部类中必须要实现是说
17、,此时在匿名内部类中必须要实现Super_Type接口中所接口中所有的方法。有的方法。lSuper_Type也可以是类,那么内部类就是基础自该类。也可以是类,那么内部类就是基础自该类。l因为匿名内部类没有名字,所以匿名内部类没有构造方法。因为匿名内部类没有名字,所以匿名内部类没有构造方法。14Swing容器容器l容器是一类能够在其中容纳容器是一类能够在其中容纳其他组件的特殊组件。其他组件的特殊组件。顶层容器:顶层容器:JFrame窗体窗体中间容器:中间容器:JPanel内容面板内容面板其它容器:其它容器:JMenuBar菜单栏菜单栏l容器的作用是方便组织管理容器的作用是方便组织管理组件,向容器
18、内的组件应用组件,向容器内的组件应用某种布局方式,使组件更容某种布局方式,使组件更容易定位。易定位。窗口窗口内容面板内容面板组件组件演示顶层容器与中间容器15布局管理器布局管理器l用户界面上的屏幕组件可以按照一定的格式布局。用户界面上的屏幕组件可以按照一定的格式布局。lJava语言提供了布局管理器(语言提供了布局管理器(LayoutManager)这个)这个工具来管理组件在容器中的布局。工具来管理组件在容器中的布局。每个容器都提供一个方法每个容器都提供一个方法setLayout(LayoutManager mgr),用来指定要被使用的布局管理器。用来指定要被使用的布局管理器。布局管理器是一组类
19、,它实现布局管理器是一组类,它实现 java.awt.LayoutManager接口。接口。常用的布局管理器,包括常用的布局管理器,包括BorderLayout(边界布局)、(边界布局)、FlowLayout(流布局)、(流布局)、GridLayout(网格布局)和(网格布局)和GridBagLayout(网袋布局)。(网袋布局)。16BorderLayout布局布局lBorderLayout是是JFrame类的默认布局管理器,类的默认布局管理器,它提供了一种较为复杂它提供了一种较为复杂的组件布局管理方案,的组件布局管理方案,主要用于布置容器的边主要用于布置容器的边界布局。界布局。l它将容器划
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 Java 语言程序设计 第十二
限制150内