欢迎来到天天文库
浏览记录
ID:33489627
大小:1.53 MB
页数:46页
时间:2019-02-26
《java编程高级-gui编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
JAVA编程高级——GUI编程3Sept.2008©NeusoftConfidential GUI编程目标:JavaSwing包,什么是组件教学方法:讲授ppt+和容器的概念及相关类。布局管理上机练习器。Swing中常用组件的使用。Swing中的事件处理模型。 本章要点•GUI概述•Swing容器和组件•布局管理器•GUI事件处理 Contents1GUI概述2Swing容器和组件3布局管理器4GUI事件处理 GUI概述•GUI(GraphicalUserInterface)图形用户界面通过java应用程序提供给用户操作的图形界面,包括窗口、菜单栏、工具条、按钮等组件和其他各种屏幕元素 GUI概述•JavaGUIJava提供了两个GUI的开发包:java.awtjavax.swingjava.awt包AWT是javaGUI的早期版本,AWT中提供了基本的GUI设计工具,但组件种类有限,无法设计所需的所有功能。java.awt包中的抽象类Component是所有JavaGUI组件的共同父类,它规定了所有GUI组件的基本特性。javax.swing包Swing是构筑在AWT上层的一组GUI组件集合,与AWT相比Swing提供了更完整的组件,引入了许多新的特性和能力。 GUI概述•GUI组件按其作用可分为两大类:基本组件(简称组件、构件)容器GUI组件:也称构件,其上不能容纳其他组件,如按钮、文本框等图形界面元素。容器:是一种特殊的组件,用来容纳其他组件,如窗口、对话框等。菜单栏按钮文本框下拉列表框窗口 Contents1GUI概述2Swing容器和组件3布局管理器4GUI事件处理 Swing容器和组件•Swing组件继承关系图FrameJFramewindowDialogJDialogJcomponentobjectcomponentcontainerJTextcompontentJLabelJTableJListAbtractButtonJPanel..JComboBoxJMenuItemJToggleButtonJButtonJMenuJCheckBoxJRadioButton Swing容器和组件•Swing容器及组件的使用JButton…JTable中间容器(JPanel等)JMenu内容面板(contentPane)菜单条(JMenuBar等)顶层容器(JFrame等) Swing容器和组件•创建顶层容器(窗口)—类JFrame的使用可通过构造函数创建JFrame类对象,生成不可视的窗体组件。构造一个初始时不可见的新窗体:JFrameframe=newJFrame();创建一个初始不可见的、具有指定标题title的新窗体:JFrameframe=newJFrame(Stringtitle);示例:JFrameDemo.java Swing容器和组件•创建顶层容器(窗口)—类JFrame的使用设置窗口体显示位置:setLocation(intx,inty)设置窗口体大小:setSize(intwidth,intheight)设置窗口体是否可见:setVisible(booleanb) Swing容器和组件•获得内容面板(ContentPane)示例:JFrameDemo.java可通过JFrame对象的getContentPane()方法获得内容面板。获得窗口体上的内容面板:JFrameframe=newJFrame();Containercon=frame.getContentPane();在内容面板上添加组件add(Componentcomp);add(Stringloc,Componentcomp); Swing容器和组件•创建基本组件示例:JFrameDemo.java基本组件分类:文本输入组件:文本框(JTextField)、密码域(JPasswordField)、文本域(JTextArea)、标签(JLabel)按钮组件:普通按钮(JButton)、复选框(JCheckBox)、单选按钮(JRadioButton)下拉列表框(JComboBox)按钮文本框下拉列表框 Swing容器和组件•创建基本组件—文本组件示例:JFrameDemo.java标签(JLabel):使用JLabel类可创建表示短文本字符串或图像或二者的显示标签组件对象。创建文字或图像显示标签的构造方法:JLabel(Stringtext)JLabel(Iconimage);可指定文本水平对齐方式:JLabel(Stringtext,inthorizontalAlignment)其中的取值可以是SwingConstants中定义的LEFT、CENTER、RIGHT、LEADING或TRAILING常量 Swing容器和组件•创建基本组件—文本组件示例:JFrameDemo.java文本框(JTextField):使用JTextField类可创建表示单行文本框的组件对象。构造一个具有指定列数的新的空TextField:JTextField(intcolumns)构造一个用指定文本初始化的新TextField:JTextField(Stringtext);获取/设置单行文本:publicStringgetText()publicvoidsetText(Stringt) Swing容器和组件•创建基本组件—文本组件示例:JFrameDemo.java文本域(JTextArea):使用JTextArea类可创建显示纯文本的多行区域的组件对象。创建文字或图像显示标签的构造方法:JTextArea(introws,intcolumns)获取、设置、追加多行文本:publicStringgetText()publicvoidsetText(Stringt)publicvoidappend(Stringstr) Swing容器和组件•创建基本组件—按钮组件示例:JFrameDemo.java普通按钮(JButton):使用JButton类创建普通按钮对象,生成按钮组件。创建一个带文本text的按钮:newJButton(Stringtext)创建一个带图标icon的按钮:newJButton(Iconicon) Swing容器和组件•创建基本组件—复选框示例:JFrameDemo.java复选框(JCheckBox):使用JCheckBox类创建复选框对象,可以让用户选择多个选项。创建一个带文本text的复选框:newJCheckBox(Stringtext)创建一个带文本,并有初始选定状态的复选框:newJCheckBox(Stringtext,booleanselected)获取复选框文本的内容getText() Swing容器和组件•创建基本组件—单选按钮示例:JFrameDemo.java单选按钮(JRadioButton):使用JRadioButton类创建单选按钮组件,但用户每次只能选中一个单选按钮。创建一个带文本text的复选框:newJRadioButton(Stringtext)创建一个带文本,并有初始选定状态的复选框:newJRadioButton(Stringtext,booleanselected)获取复选框文本的内容getText() Swing容器和组件•创建基本组件—单选按钮示例:JFrameDemo.java单选按钮(JRadioButton)将多个单选按钮放入一个单选按钮组:ButtonGroupg=newButtonGroup();将单选按钮添加到同一单选按钮组:add(AbstractButtonb) Swing容器和组件•创建基本组件—下拉列表框示例:JFrameDemo.java下拉列表框(JComboBox):使用JComboBox类可以创建下拉列表对象。创建一个没有选项的下拉列表:newJComboBox()创建含有指定数组元素的下拉列表:newJComboBox(Object[]items)向下拉列表中添加选项/获得所选项voidaddItem(Objectobj)/ObjectgetSelectedItem() Swing容器和组件•中间容器类—JPanel示例:JFrameDemo.javaJPanel类是最简单的容器类,可容纳各类基本组件,包括其它面板JPanel类作为面板组件可添加至窗体jframe.getContentPane().add(JPanelp)jframe.setContentPane(JPanelp)创建一个流式布局的JPanelnewJPanel()创建一个含有指定布局管理器的JPanelnewJPanel(LayoutManagerlayout) Swing容器和组件•中间容器类—JScrollPane(滚动面板)使用JScrollPane类可创建带滚动条的中间容器对象创建一个空的JScrollPanenewJScrollPane()创建一个显示指定组件内容的JScrollPanenewJScrollPane(Componentview)示例:JFrameDemo.java Swing容器和组件•常用组件—菜单(JMenuBar)示例:JFrameDemo.java在JFrame中,有一个菜单栏(JMenuBar)用来建立菜单菜单栏(JMenuBar)菜单菜单项(JMenu)(JMenuItem)子菜单(JMenu) Swing容器和组件•常用组件—菜单(JMenuBar)示例:JFrameDemo.java在Swing中建立菜单一般需要3步:建立一个菜单栏(JMenuBar),并添加到窗口体(JFrame)中newJMenuBar()setJMenuBar(JMenuBarmenubar)建立菜单(JMenu),加到菜单栏(JMenuBar)中newJMenu(Stringname)add(JMenumenu)建立菜单项(JMenuItem)或子菜单(JMenu),加到菜单中(JMenu)newJMenuItem(Stringitemname) Swing容器和组件•常用组件—表格(JTable)可使用JTable、DefaultTableModel等类实现表组件的功能。 Swing容器和组件•常用组件—表格(JTable)示例:JFrameDemo.javajavax.swing.table包中的JTable类提供二维单元表的组件的功能常用构造函数有显示二维数组rowData中的值,其列名称为columnNames:newJTable(Object[][]rowData,Object[]columnNames)使用model作为数据模型newJTable(TableModelmodel) Swing容器和组件•常用组件—表格(DefaultTableModel)DefaultTableModel类是javax.swing.table包中TableModel接口的实现类,使用一个Vector来存储单元格的值对象,该Vector由多个Vector组成创建一个列属性已知的,rowCount行的表格模型:newDefaultTableModel(Object[]columnNames,introwCount)示例:JFrameDemo.java Contents1GUI概述2Swing容器和组件3布局管理器4GUI事件处理 布局管理器•布局管理器简介Java提供了布局管理器来管理组件在容器中的布局,java.awt包中常用的布局管理器类有:BorderLayout-边界布局FlowLayout-流式布局CardLayout-卡片布局GridLayout-网格布局GridBagLayout-网袋布局 布局管理器•布局管理器简介 布局管理器•BorderLayout(边界布局管理器)BorderLayout将容器划分为东、南、西、北、中五个区域,可以将组件分放在这五个区域中。原则上,BorderLayout允许最多放置五个组件,而可借助面板类Panel添加更多的组件。BorderLayout是窗口体(JFrame)的默认布局 布局管理器•FlowLayout(流式布局管理器)FlowLayout把容器中的组件从左到右,从上到下依次排列。如果某容器采用FlowLayout布局,那么其add方法中指定的位置参数将被忽略。当容器窗口大小改变时,组件的位置可能会发生变化,但组件尺寸不变。FlowLayout是面板(JPanel)的默认布局 布局管理器•设置容器的布局管理器修改窗口体(顶层容器,JFrame)的布局管理器voidsetLayout(LayoutManagermanager)修改中间容器(JPanel)的布局管理newJPanel(LayoutManagermanager)voidsetLayout(LayoutManagermanager)取消布局管理器/设置各组件的大小和位置setLayout(null)setBounds(intx,inty,intwidth,intheight) Contents1GUI概述2Swing容器和组件3布局管理器4GUI事件处理 GUI事件处理•事件处理机制在Java的GUI程序中,事件用于描述程序、系统或者使用者的活动,是图形系统的最基本的功能之一。在一个图形界面的程序中,用户点击一个按钮,这时系统便会创建一个事件,并且把该事件交给相应的程序去处理。 GUI事件处理•事件处理模型事件源:发生事件的组件。事件:用户对组件的操作。事件处理程序:负责处理事件的方法事件监听器:存放事件处理器方法的类对象。事件监听器注册:将一个事件监听器对象同某个事件源的某种事件进行关联的过程。 GUI事件处理•事件处理模型3.产生事件对象1.监听器的产生2.注册组件(事件源)事件监听器A事件处理a4.把对象传给监听器事件处理b事件监听器B事件处理c事件监听器C GUI事件处理•事件处理5步骤示例:JFrameDemo.java1、监听器的产生。实现每个监听接口的类就可以作为监听器来使用。2、把监听器注册到组件上。采用addXXXListener的方式。如:button.addActionListener(监听器)。3、事件的产生。如按下按钮,就产生该事件的一个对象。4、系统把产生出来的事件对象自动返回给已经注册过的监听器。5、由该监听器来指派相应的方法来处理事件。这个一般由我们开发者来编写处理代码。 GUI事件处理•常见的事件及其事件监听器事件类事件监听器事件源(组件)产生事件的时机ActionEventActionListenerButton按钮按下时List双击List中的项目时MenuItem选取菜单中的某项时TextField按下Enter时AdjustmentEveAdjustmentListeneScrollbar滚动滚动条时ntrItemEventItemListenerCheckbox选中某个选项时CheckboxMenuIt勾选菜单中某个选项时emChioce选取下拉菜单中某个选项时List选取List某个选项时TextEventTextListenerTextArea文本内容改变时TextField文本内容改变时 GUI事件处理•事件监听器及其接口方法事件分类接口名方法ActionEventActionListeneractionPerformed(ActionEvent)ItemEventItemListeneritemStateChanged(ItemEvent)AdjustmentEveAdjustmentListenadjustmentValueChanged(AdjustmentnterEvent)TextEventTextListenertextValueChanged(TextEvent) GUI事件处理•事件适配器为了简化编程,JDK针对大多数事件监听接口定义了相应的实现类,我们称之为事件适配器(XXXAdapter)类。在事件适配器中实现了相应监听器接口中的所有方法,但不做任何操作。一个类只要继承适配器类,如果要对某类事件的某种情况进行处理,只要覆盖相应的方法就可以了,其他方法就再也不用“简单实现”了。示例:JFrameDemo.java GUI事件处理•事件监听器的匿名内部类实现方式如果一个事件监听器类只用于在一个组件上注册监听器事件对象,为了让程序代码更为紧凑,可以用匿名内部类的语法来产生这个事件监听器对象示例TestEvent.java 本章小结•GUI简介•Swing容器和组件•布局管理器•GUI事件处理
此文档下载收益归作者所有
举报原因
联系方式
详细说明
内容无法转码请点击此处