您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第04章-SWING图形用户界面设计
1面向对象程序设计21.概述2.常用容器3.事件处理4.布局设计5.基本控制组件第四章SWING图形用户界面设计3概述图形用户界面(GraphicsUserInterface,缩写GUI)是指以图形的显示方式与用户实现交互操作的应用程序界面。Java提供了十分完善的图形用户界面功能,使得软件开发人员可以轻而易举地开发出功能强大、界面友善、安全可靠的应用软件。发展历史:命令行——》图形用户界面4概述在Java语言中,有两个包(java.awt和javax.swing)囊括了实现图形用户界面的所有基本元素,这些基本元素主要包括容器、组件、绘图工具和布局管理器等。java.awt是java1.1用来建立GUI的图形包,“awt”是抽象窗口工具包(AbstractWindowToolkit)的缩写,其中的组件常被称为AWT组件。javax.swing是Java2提出的AWT的改进包,它主要改善了组件的显示外观,增强了组件的控制能力。5概述早期版本的AWT组件在java.awt包里,包括Button、Checkbox、Scrollbar等,都是Component类的子类大部分含有nativecode,所以随操作系统平台的不同会显示出不同的样子,而不能进行更改,是重量级组件(heavyweightcomponents)没有弹性、缺乏效率6概述较新的Swing组件其名称都是在原来AWT组件名称前加上J,例如JButton、JCheckBox、JScrollbar等,都是JComponent类的子类Java1.2推出,架构在AWT之上,是AWT的扩展而不是取代,AWT仍然是Swing的一个必备补充完全是由java语言编写的,其外观和功能不依赖于任何由宿主平台的窗口系统所提供的代码,是轻量级组件(lightweightcomponents)可提供更丰富的视觉感受,被越来越多地使用7概述在Java语言中,用户界面由三部分构成:(1)顶层容器:每个图形用户界面Java程序都必须至少有一个顶层容器,别的组件都必须放在这个顶层容器上才能显现出来。顶层容器有:JFrame,JDialog,浏览器;(2)中间容器:存在的目的仅仅是为了容纳别的组件,使界面有条理,美观,易于控制。中间容器有:JPanel,JScrollPane等(3)基本控制组件:基本功能是和用户交互信息,而不像前两种组件那样是用来容纳别的组件的。基本控制组件:JLabel、JButton、JCheckBox、JRadioButton、JComboBox、JList、JMenu、JTexComponent等81.概述2.常用容器3.事件处理4.布局设计5.基本控制组件第五章SWING图形用户界面设计9常用容器窗体(JFrame)JFrame是一种具有边框的容器,它是JavaApplication程序的图形用户界面的最外层容器。特点:(1)有边框(2)能被移动、缩放和关闭(3)作为最外层容器,不能被其它容器所包含(4)默认布局:边界布局(BorderLayout)10常用容器JFrame的继承结构java.lang.Object└java.awt.Component└java.awt.Container└java.awt.Window└java.awt.Frame└javax.swing.JFrame每个包含Swing组件的主窗口都应用JFrame来实现11常用容器构造函数格式:JFrame()功能:建立一个无标题的Frame。格式:JFrame(Stringtitle)功能:建立一个标题为title的Frame。常用方法StringgetTitle();获取窗口标题voidsetTitle(Strings);设置窗口标题voidsetVisible(booleanb);设置窗口可见性voidsetBounds(inta,intb,intwidth,intheight);设置窗口位置和大小voidsetBackground(Colorc);设置窗口背景颜色voidpack();用紧凑方式显示窗口voidsetSize(intwidth,intheight);设置窗口大小12常用容器创建窗体有两种方式:(1)直接创建JFrame的对象,适合于简单窗体;(2)继承JFrame类,在继承类中编写代码对窗体进行详细的刻画,适合窗体比较复杂的情况。大多数情况下开发人员都用第二种方法。注意:窗体创建以后是不可见的,必须调用Window类的show()方法或Component类的setVisible()方法显示该窗体。见以下两个例子:13常用容器importjavax.swing.*;publicclassSample5_1{publicstaticvoidmain(String[]args){//创建一个窗体对象JFramemyWindow=newJFrame();//向窗体中添加一个标签myWindow.add(newJLabel(这是一个窗体,演示了JFrame类的基本功能));//设置窗体的标题myWindow.setTitle(自定义的窗体);//设置窗体的大小myWindow.setBounds(80,80,480,180);//根据接收的boolean设置窗体是否可以调整大小myWindow.setResizable(false);//设置窗体的可见性myWindow.setVisible(true);}}直接创建JFrame的对象14常用容器importjavax.swing.*;classMyWindowextendsJFrame{//定义无参构造函数publicMyWindow(){}publicMyWindow(booleanb){//向窗体中添加一个标签this.add(newJLabel(这是一个窗体,演示了JFrame类的基本功能));//设置窗体的标题this.setTitle(自定义的窗体);//设置窗体的大小this.setBounds(80,80,480,180);//根据接收的boolean设置窗体是否可以调整大小this.setResizable(b);//设置窗体的可见性this.setVisible(true);}}publicclassSample5_2{publicstaticvoidmain(String[]args){//创建MyWindow类的对象,并传递False值使得窗体不能调整大小newMyWindow(false);}}继承JFrame类15常用容器importjavax.swing.*;publicclassMyWindowextendsJFrame{//定义无参构造函数publicMyWindow(){}publicMyWindow(booleanb){//向窗体中添加一个标签this.add(newJLabel(这是一个窗体,演示了JFrame类的基本功能));//设置窗体的标题this.setTitle(自定义的窗体);//设置窗体的大小this.setBounds(80,80,480,180);//根据接收的boolean设置窗体是否可以调整大小this.setResizable(b);//设置窗体的可见性this.setVisible(true);}publicstaticvoidmain(String[]args){newMyWindow(false);}}16常用容器对话框(JDialog)对话框(JDialog)与JFrame一样,都是有边框和标题的独立使用的容器,不能被其它容器所包容。与JFrame的不同之处:不能作为程序的最外层容器,它必须属于某个JFrame,由该JFrame弹出。对话框可以接受用户的输入,实现与用户的交互作用。17常用容器JDialog的继承结构java.lang.Object└java.awt.Component└java.awt.Container└java.awt.Window└java.awt.Dialog└javax.swing.JDialog要实现对话框,需要从JDialog派生一个类18常用容器构造函数JDialog(Frameowner)功能:建立无标题的通用对话框,它属于窗口owner,可以响应其它窗口。JDialog(Frameowner,booleand)功能:建立无标题的通用对话框,它属于窗口owner,若d为true则不能响应其它窗口。JDialog(Frameowner,Stringtxt)功能:建立标题为txt的通用对话框,它属于窗口owner,可以响应其它窗口。JDialog(Frameowner,Stringtxt,booleand)功能:建立标题为txt的通用对话框,它属于窗口owner,若d为true则不能响应其它窗口。19常用容器常用方法表列出了通用对话框JDialog类的几个常用的方法。方法说明ContainergetContentPane()返回该通用对话框的contentPanelvoidsetLayout(LayoutManagermanager)设置布局管理器Componentadd(Componentcomp)在对话框中添加组件voidsetBackground(Colorc)设置对话框的背景色voidsetLocation(intx,inty)设置对话框的显示位置voidsetSize(intwidth,intheight)设置对话框的大小voidsetVisible(booleanb)设置对话框是否可见20常用容器面板(JPanel)无边框容器特点:(1)最简单的一种容器(2)没有边框(3)不能被移动、缩放和关闭(4)通常作为一个容器组件被加到其它容器中,如JApplet,JFrame等(5)默认布局:顺序布局(FlowLayout)JApplet是JPanel的子类,是一种特殊的JPanel21常用容器名称说明JPanel()创建一个JPanel,默认布局是FlowLayoutJPanel(LayoutManagerlayout)创建一个指定布局的JPanelvoidadd(Componentcomp)添加组件voidadd(Componentcomp,intindex)把组件添加到特定位置上intgetComponentCount()获得这个panel里所有组件的数量ComponentgetComponent(intindex)获得指定序号的某个组件ComponentgetComponentAt(intx,inty)获得指定位置的某个组件voidremove(Component)移除某个组件voidremoveAll()移除所有组件voidsetLayout(LayoutManagerlayout)设置布局LayoutManagergetLayout()得到现有布局voidsetBorder(Borderborder)设置边框JPanel常用方法:221.概述2.常用容器3.事件处理4.布局设计5.基本控制组件第五章SWING图形用户界面设计23事件处理界面设计(静态)界面动起来通过事件触发对象的响应机制一些常见的事件包括:移动鼠标单双击鼠标各个按钮单击按钮在文本字段输入在菜单中选择菜单项在组合框中选择、单选和多选拖动滚动条关闭窗口……24委托事件模型中传递及处理事件对象的流程委托执行事件监听程序(执行ActionListener接口actionPerformed方法)事件源(Button)产生事件(ActionEvent)用户操作(单击按钮)事件监听者注册事件处理25事件处理编写事件处理程序时,要注意三个概念事件源与用户进行交互的GUI组件,表示事件来自于哪个组件或对象比如要对按钮被按下这个事件编写处理程序,按钮就是事件源事件监听器负责监听事件并做出响应一旦它监视到事件发生,就会自动调用相应的事件处理程序作出响应事件对象封装了有关已
本文标题:第04章-SWING图形用户界面设计
链接地址:https://www.777doc.com/doc-3351542 .html