第10章图形用户界面设计

上传人:夏** 文档编号:568301924 上传时间:2024-07-24 格式:PPT 页数:39 大小:331.50KB
返回 下载 相关 举报
第10章图形用户界面设计_第1页
第1页 / 共39页
第10章图形用户界面设计_第2页
第2页 / 共39页
第10章图形用户界面设计_第3页
第3页 / 共39页
第10章图形用户界面设计_第4页
第4页 / 共39页
第10章图形用户界面设计_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《第10章图形用户界面设计》由会员分享,可在线阅读,更多相关《第10章图形用户界面设计(39页珍藏版)》请在金锄头文库上搜索。

1、JAVA语言程序设语言程序设计计图形用户界面设计图形用户界面设计第十章第十章回顾回顾掌握多线程的概念掌握多线程的概念掌握如何创建线程掌握如何创建线程了解死锁的概念了解死锁的概念了解线程同步了解线程同步了解使用了解使用wait()和和notify()在线程之在线程之间进行通信间进行通信2 2目标目标GUIGUI相关概念相关概念 布局管理器布局管理器 事件处理事件处理 常用常用SwingSwing组件组件 3 310.1.1GUI包和简单包和简单GUI程序程序2-11 1java.java.awtawt包包 称为抽象窗口工具集称为抽象窗口工具集AWTAWT(Abstract Abstract Wi

2、ndow ToolkitWindow Toolkit),),是使用是使用JavaJava进行进行GUIGUI设设计的基础。计的基础。 2 2javaxjavax.swing.swing包包 Swing Swing组件存放在组件存放在javaxjavax.swing.swing包中。几乎包中。几乎所有所有AWTAWT组件对应有新功能更强的组件对应有新功能更强的SwingSwing组组件。另外还加入了一些全新的组件。件。另外还加入了一些全新的组件。SwingSwing组件在名称上前面多了一个字母组件在名称上前面多了一个字母“J J” 。4 410.1.1GUI包和简单包和简单GUI程序程序2-23

3、 3设置设置GUIGUI应用程序的流程:应用程序的流程:(1 1)引用需要的包和类。)引用需要的包和类。(2 2)设置一个顶层的容器。)设置一个顶层的容器。(3 3)根据需要为容器设置布局管理器或使用)根据需要为容器设置布局管理器或使用默认布局管理器。默认布局管理器。(4 4)将组件添加到容器内,位置自行设计。)将组件添加到容器内,位置自行设计。(5 5)为响应事件的组件编写事件处理代码。)为响应事件的组件编写事件处理代码。5 510.1.2容器、组件、布局和观容器、组件、布局和观感感1.容器和组件容器和组件组件是可以用图形化的方式显示在屏幕上并能组件是可以用图形化的方式显示在屏幕上并能够与用

4、户进行交互的对象。够与用户进行交互的对象。容器是一种特殊的组件,一种能够容纳其他组容器是一种特殊的组件,一种能够容纳其他组件或容器的组件。件或容器的组件。2.布局管理器布局管理器为了使图形用户界面具有良好的平台无关性,提为了使图形用户界面具有良好的平台无关性,提供了专门用来管理组件在容器中的布局的工具。供了专门用来管理组件在容器中的布局的工具。3.观感观感决定决定swing应用程序的外观。应用程序的外观。6 610.2布局管理器布局管理器Java中的中的布局类型包括以下几种:布局类型包括以下几种:-FlowLayout(流式布局)流式布局)-BorderLayout(边界布局)(边界布局)-G

5、ridLayout(网格布局)(网格布局)-CardLayout(卡片布局)(卡片布局)-GridBagLayout(网格包布局)(网格包布局)7 710.2.1FlowLayout布局管理布局管理器器FlowLayout的构造函数有:的构造函数有:-FlowLayout():生成一个默认的流式布局生成一个默认的流式布局-FlowLayout(intalignment):可以设定每可以设定每一行组件的对齐方式一行组件的对齐方式-FlowLayout(intalignment,inthorz,intvert):可以设定组件间的水平和垂直距离可以设定组件间的水平和垂直距离Applet和面板的缺省布

6、局和面板的缺省布局 组件从左上角开始按从左到右、从上到下的组件从左上角开始按从左到右、从上到下的方式排列方式排列FlowLayout mylayout = new FlowLayout();FlowLayout exLayout = new FlowLayout(FlowLayout.RIGHT);setLayout(exlayout); / 为容器为容器设置新布局设置新布局8 810.2.2BorderLayout布局管布局管理器理器下面是下面是BorderLayout所定义的构造函数:所定义的构造函数: -BorderLayout():生成默认的边界布局生成默认的边界布局 -BorderL

7、ayout(inthorz,intvert):可可以以设设定定组组件件间的间的水平和垂直距离水平和垂直距离窗口窗口、框架和对话框等的缺省布局框架和对话框等的缺省布局组件被置于容器的北、南、东、西或中间位置组件被置于容器的北、南、东、西或中间位置. . . . . . setLayout setLayout(new (new BorderLayoutBorderLayout();(); Button Button btnEastbtnEast=new Button(=new Button(东东);); Button Button btnWestbtnWest=new Button(=new Bu

8、tton(西西);); Button Button btnNorthbtnNorth=new Button(=new Button(北北);); Button Button btnSouthbtnSouth=new Button(=new Button(南南);); Button Button btnCenterbtnCenter=new Button(=new Button(中中);); add(add(btnEastbtnEast, ,BorderLayoutBorderLayout.EAST);.EAST); add( add(btnWestbtnWest, ,BorderLayoutB

9、orderLayout.WEST);.WEST); add( add(btnNorthbtnNorth, ,BorderLayoutBorderLayout.NORTH);.NORTH); add( add(btnSouthbtnSouth, ,BorderLayoutBorderLayout.SOUTH);.SOUTH); add( add(btnCenterbtnCenter, ,BorderLayoutBorderLayout.CENTER);.CENTER);9 910.2.3GridLayout布局管理器布局管理器GridLayout的构造函数如下所示:的构造函数如下所示: -Gri

10、dLayout():生成一个单列的网格布局生成一个单列的网格布局-GridLayout(introw,intcol):生生成成一一个个设设定定行行数数和和列数的网格布局列数的网格布局-GridLayout(introw,intcol,inthorz,intvert):可可以设置组件之间的水平和垂直间隔以设置组件之间的水平和垂直间隔用于将容器区域划分为一个矩形网格用于将容器区域划分为一个矩形网格组件按行和列排列组件按行和列排列. . . Button btn; / 声明按钮数组声明按钮数组 String str=1,2,3,4,5,6,7,8,9; setLayout(new GridLayou

11、t(3,3); btn=new Buttonstr.length; / 创建按钮数组创建按钮数组 for(int i=0;istr.length;i+) btni=new Button(stri); add(btni); 101010.2.4CardLayout布局管理布局管理器器可存储几个不同的布局。可存储几个不同的布局。每个布局就像是一个卡片组中的一张卡片。每个布局就像是一个卡片组中的一张卡片。在一个给定的时间总会有一张卡片在顶层。在一个给定的时间总会有一张卡片在顶层。卡片通常为一个卡片通常为一个Panel对象。对象。每当需要许多面板切换,而每个面板需要显每当需要许多面板切换,而每个面板需

12、要显示为不同布局时,可以使用卡片布局。示为不同布局时,可以使用卡片布局。111110.2.5GridBagLayout布局管布局管理器理器通过使用以下语法容器可获得通过使用以下语法容器可获得GridBagLayout:GridBagLayout gb=new GridBagLayout();ContainerName.setLayout(gb);要使用此布局,必须提供各组件的大小和布局等信要使用此布局,必须提供各组件的大小和布局等信息。息。GridBagConstraints类中包含类中包含GridBagLayout类用来定位及调整组件大小所需的全部信息。类用来定位及调整组件大小所需的全部信息

13、。组件大小不必相同组件大小不必相同组件按行和列排列组件按行和列排列放置顺序不一定为从左至右和由上至下放置顺序不一定为从左至右和由上至下1212GridBagConstraints类类2-1成员变量列表:成员变量列表:-gridx,gridy:指定组件放置于哪个单元中指定组件放置于哪个单元中-gridwidth,gridheight:指定组件将占用多指定组件将占用多少行和多少列少行和多少列-weightx,weighty:指定在一个指定在一个GridBagLayout中应如何分配空间中应如何分配空间,这些变这些变量的缺省值为量的缺省值为0-ipadx,ipady:指定组件的最小高度和宽度指定组件

14、的最小高度和宽度1313成员变量列表:成员变量列表:-fill:指定在单元大于组件的情况下指定在单元大于组件的情况下,组件如组件如何填充此单元何填充此单元,共有共有4可选值。缺省值为:可选值。缺省值为:GridBagConstraints.NONE-anchor:指定将组件放置在单元中的位置,指定将组件放置在单元中的位置,共有共有9个可选值。缺省值为:个可选值。缺省值为:GridBagConstraints.CENTER GridBagConstraints类类2-2141410.2.6swing布局管理器布局管理器1.BoxLayout布局管理器布局管理器按照从上到下(即按照从上到下(即Y轴

15、)或者从左到右轴)或者从左到右(即(即X轴)的顺序来依次排列组件。轴)的顺序来依次排列组件。2.ScrollPaneLayout布局管理器布局管理器是是JScrollPane中的内置布局管理器,所中的内置布局管理器,所以不需要单独创建,会自动设置。以不需要单独创建,会自动设置。151510.2.7Null布局管理器布局管理器在在某某些些情情况况下下,用用户户不不想想使使用用布布局局管管理理器器,需需要要自自己己设设置置组组件件的的位位置置和和大大小小,这这时时应应取取消消容容器器的的布布局局管管理理器器,然然后后再再进进行行设设置置,否否则则用用户户自自定定义义设设置置将将会会被被布布局局管管

16、理理器器覆覆盖盖。取取消布局管理器的方法是:消布局管理器的方法是: setLayoutsetLayout(null);(null); 用户使用用户使用setLocationsetLocation()()、setSizesetSize()()、setBoundssetBounds()()等方法为组件设置位置和大小。需要注意等方法为组件设置位置和大小。需要注意的是,这种方法会导致程序与系统相关,如的是,这种方法会导致程序与系统相关,如不同的分辨率会产生不同的效果。不同的分辨率会产生不同的效果。 161610.3.1事件处理模型事件处理模型Java最新的事件处理方法是基于授权事件模型最新的事件处理方

17、法是基于授权事件模型当事件来源对象因用户的操作(鼠标或键盘),当事件来源对象因用户的操作(鼠标或键盘),系统会自动触发此事件类对象系统会自动触发此事件类对象E,并通知所授并通知所授权的事件监听者权的事件监听者A(若来源对象已向若来源对象已向A注册),注册),事件监听者事件监听者A中有处理各种事件的方法中有处理各种事件的方法(事件处事件处理者理者1n)便会处理此事件便会处理此事件E的各种状况的各种状况。171710.3.2事件层次结构事件层次结构2-1事件类事件类说明说明事件源事件源ActionEvent 通常按下按钮,双击列表项或选通常按下按钮,双击列表项或选中一个菜单项时,就会生成此事中一个

18、菜单项时,就会生成此事件。件。 Button、List、MenuItem、TextField AdjustmentEvent 操纵滚动条时会生成此事件。操纵滚动条时会生成此事件。 Scrollbar ComponentEvent 当一个组件移动、隐藏、调整大当一个组件移动、隐藏、调整大小或成为可见时会生成此事件。小或成为可见时会生成此事件。Component ItemEvent 单击复选框或列表项时,或者当单击复选框或列表项时,或者当一个选择框或一个可选菜单的项一个选择框或一个可选菜单的项被选择或取消时生成此事件。被选择或取消时生成此事件。 Checkbox、CheckboxMenuItem、

19、Choice、List FocusEvent 组件获得或失去键盘焦点时会生组件获得或失去键盘焦点时会生成此事件。成此事件。 Component181810.3.2事件层次结构事件层次结构2-2事件类事件类说明说明事件源事件源KeyEvent 接收到键盘输入时会生成此事件。接收到键盘输入时会生成此事件。 Component MouseEvent 拖动、移动、单击、按下或释放拖动、移动、单击、按下或释放鼠标或在鼠标进入或退出一个组鼠标或在鼠标进入或退出一个组件时,会生成此事件。件时,会生成此事件。 Component ContainerEvent 将组件添加至容器或从中删除时将组件添加至容器或从中

20、删除时会生成此事件会生成此事件。Container TextEvent 在文本区或文本域的文本改变时在文本区或文本域的文本改变时会生成此事件会生成此事件 。TextField、TextArea WindowEvent 当一个窗口激活、关闭、当一个窗口激活、关闭、失效、失效、恢复、最小化、打开或退出时会恢复、最小化、打开或退出时会生成此事件。生成此事件。 Window 191910.3.3事件处理方法事件处理方法实现事件监听器接口法:实现事件监听器接口法:首先给组件注册监听器,使用下列方法:首先给组件注册监听器,使用下列方法: addxxxListeneraddxxxListener( (事件监

21、听器对象事件监听器对象);); 确定了事件监听器的类型后,必须在程序确定了事件监听器的类型后,必须在程序中定义类来实现这些接口,重写接口中的中定义类来实现这些接口,重写接口中的所有方法。所有方法。addKeyListener(new CharType(); public class CharType implements KeyListenerpublic void keyPressed(KeyEvent e) /大大括括号号中中为为处处理理事事件件的的代代码码public void keyReleased(KeyEvent e) /未未用用到到此此方方法法,所所以以方方法法体为空体为空pub

22、lic void keyTyped(KeyEvent e) 202010.3.4事件适配器事件适配器使用实现事件监听器接口的方法处理事件使用实现事件监听器接口的方法处理事件时,必须重写监听器接口中的所有方法,时,必须重写监听器接口中的所有方法,尽管有些方法不会用到。尽管有些方法不会用到。继承事件适配器类,只需要重写所需要的继承事件适配器类,只需要重写所需要的方法即可。方法即可。addKeyListener(new CharType(); 为事件源注册事件监听器的方法同上。为事件源注册事件监听器的方法同上。public class CharType extends KeyAdapter publ

23、ic void keyPressed(KeyEvent e)/大大括括号号中中为为处处理理事事件件的的代代码码 212110.4.1常用容器组件常用容器组件3-1是是放置其他放置其他Swing组件的顶级容器组件的顶级容器JFrame组件用于在组件用于在Swing程序中创建程序中创建窗体窗体它的构造函数:它的构造函数:JFrame()JFrame(StringTitle)组件必须添加至内容窗格,而不是直接添组件必须添加至内容窗格,而不是直接添加至加至JFrame对象,示例:对象,示例:frame.getContentPane().add(b);222210.4.1常用容器组件常用容器组件3-2J

24、Panel组件是一个中间容器组件是一个中间容器用于将小型的轻量级组件组合在一起用于将小型的轻量级组件组合在一起JPanel的缺省布局为的缺省布局为FlowLayoutJPanel具有下列构造函数:具有下列构造函数:JPanel()JPanel(LayoutManagerlm)232310.4.1常用容器组件常用容器组件3-3JApplet也也 是是 一一 种种 窗窗 口口 容容 器器 , 继继 承承 自自Applet类类,Applet小小程程序序是是另另一一种种Java程程序序,与与Applet不不同同的的是是,它它默默认认的的布布局局管管 理理 器器 是是 JAppletBorderLayo

25、ut, 而而Applet默认的布局管理器是默认的布局管理器是FlowLayout。可可直直接接向向Applet窗窗口口中中添添加加组组件件,但但JApplet不不行行,添添加加组组件件时时必必须须添添加加到到其其内容窗格中。得到内容窗格使用方法:内容窗格中。得到内容窗格使用方法: getContentPanegetContentPane(); (); 242410.4.2标签标签(JLabel)它既可以显示文本也可以显示图像它既可以显示文本也可以显示图像构造函数如下:构造函数如下:JLabel(Iconicon):icon表示使用的图标表示使用的图标JLabel(Stringtext,Icon

26、icon,intalign):text表示使用的字符串表示使用的字符串;icon表示使用的图表示使用的图标标;align表示水平对齐方式,其值可以为:表示水平对齐方式,其值可以为:LEFT、RIGHT、CENTER。其它常用方法其它常用方法 getText()setText(Stringtext)252510.4.3按钮按钮(JButton)可以使用以下任一构造函数来创建按钮:可以使用以下任一构造函数来创建按钮:-JButton():新建一个空的按钮新建一个空的按钮-JButton(Iconicon)-JButton(Stringtext)-JButton(Stringtext,Iconico

27、n)JButton btnOk=new JButton(确定确定!);JButton btnCancel=new JButton(取消取消!); getContentPane.add(btnOk);getContentPane.add(btnCancel);262610.4.4文本框文本框-JTextFieldJTextField组件允许输入或编辑单行文本组件允许输入或编辑单行文本此类的构造函数包括:此类的构造函数包括:JTextField()JTextField(Documentdoc,Stringtext,intcolumns)JTextField(intcolumns)JTextFiel

28、d(Stringtext)JTextField(Stringtext,intcolumns)Container con = getContentPane();con.setLayout(new FlowLayout();JLabel jl = new JLabel(“文本域文本域”); con.add(jl);JTextField tf = new JTextField(20); con.add(tf); 272710.4.4文本框文本框-JPasswordFieldJPasswordField组件允许输入或编辑单组件允许输入或编辑单行文本,并且文本被其他字符代替。行文本,并且文本被其他字符代

29、替。此类的构造函数与单行文本框类似。此类的构造函数与单行文本框类似。其它方法:其它方法:chargetPassword()chargetEchoChar()voidsetEchoChar(charc)282810.4.4文本框文本框-JTextAreaJTextArea组件用于接受来自用户的多行文本组件用于接受来自用户的多行文本它可实现可滚动界面它可实现可滚动界面JTextArea组件可使用下列构造函数创建:组件可使用下列构造函数创建:JTextArea()JTextArea(introws,intcols)JTextArea(Stringtext)JTextArea(Stringtext,i

30、ntrows,intcols)JTextArea(Documentdoc)JTextArea(Documentdoc,Stringtext,introws,intcols)JLabel jl = new JLabel(“文本区文本区”); con.add(jl);JTextArea ta = new JTextArea(5,10); con.add(ta);292910.4.5复选框复选框-JCheckBox复选框用于为用户提供一组选项复选框用于为用户提供一组选项JCheckBox类具有下列构造函数:类具有下列构造函数:JCheckBox()JCheckBox(Iconicon)JCheckB

31、ox(Iconicon,booleanselected)JCheckBox(Stringtext)JCheckBox(Stringtext,booleanselected)JCheckBox(Stringtext,Iconicon)JCheckBox(Stringtext,Iconicon,booleanselected)303010.4.6单选按钮单选按钮-JRadioButton单选按钮允许用户从多个选项中选择其中一个单选按钮允许用户从多个选项中选择其中一个ButtonGroup用于在用于在Swing中创建组中创建组JRadioButton对象可使用下列构造函数创建:对象可使用下列构造函数

32、创建:-JRadioButton()-JRadioButton(Iconicon)-JRadioButton(Icon,booleanselected)-JRadioButton(Stringtext)-JRadioButton(Stringtext,booleanselected)-JRadioButton(Stringtext,Iconicon)-JRadioButton(Stringtext,Iconicon,booleanselected)313110.4.7列表框列表框-JListpublicJList():使用空模型构造使用空模型构造JListpublicJList(ListMod

33、eldataModel):构造一个构造一个列表列表,用它显示指定模型中的元素。,用它显示指定模型中的元素。publicJList(ObjectlistData):构造一个列表构造一个列表以显示指定数组以显示指定数组listData的元素。的元素。JList不支持滚动。要启用滚动,可使用下不支持滚动。要启用滚动,可使用下列代码列代码:JScrollPanemyScrollPane=newJScrollPane();myScrollPane.getViewport().setView(dataList);String stars = 安安东东尼尼奥奥. .班班德德拉拉斯斯,来来昂昂纳纳多多. .迪

34、迪卡卡普普尼奥尼奥, 桑德拉桑德拉. .布洛克布洛克,休休. .格兰特格兰特,朱莉亚朱莉亚. .罗伯茨罗伯茨;JList moviestars = new JList(stars); 323210.4.8组合框组合框-JComboBox文本域和下拉列表的组合文本域和下拉列表的组合在在Swing中,组合框由中,组合框由JComboBox表表示示构造函数如下:构造函数如下:publicJComboBox():此构造函数使用缺省此构造函数使用缺省数据模型创建数据模型创建JComboBoxpublicJComboBox(ComboBoxModelasModel):使用现有使用现有ComboBoxMod

35、el中的中的项目的组合框项目的组合框publicJComboBox(Objectitems):包含包含指定数组元素的组合框指定数组元素的组合框String names = 弗弗雷雷德德里里克克.福福西西斯斯, 约约翰翰.克克里里沙沙姆姆, 玛丽玛丽.希金斯希金斯.克拉克克拉克,帕特丽夏帕特丽夏.康威尔康威尔;JComboBox authors = new JComboBox(names); 333310.4.9滑块滑块-JSliderJSlider():创建滑块默认范围为创建滑块默认范围为0 0至至100100水平方向水平方向JSlider(intorientation):创创建建范范围围为为

36、0 0至至100100,初值为初值为50,50,水平或垂直滑块。水平或垂直滑块。方方向向取取值值为为JSlider.HORIZONTAL(水水平平方方向向)或或JSlider.VERTICAL(垂直方向)。垂直方向)。JSlider(intmin,intmax):创创建建范范围围从从minmin至至maxmax,初值初值minmin和和maxmax的平均值的水平滑块。的平均值的水平滑块。JSlider(intmin,intmax,intvalue):创创建建范范围围从从minmin至至max,max,初值为初值为valuevalue的水平滑块。的水平滑块。JSlider(int orienta

37、tion,int min,int max,intvalue):创创建建范范围围从从minmin至至maxmax初初值值为为valuevalue的的水水平平或垂直滑块。或垂直滑块。 343410.4.10菜单菜单3-1菜单显示项目列表,指明各种任务。菜单显示项目列表,指明各种任务。选择或单击某个选项时会打开另一个列表选择或单击某个选项时会打开另一个列表或子菜单。或子菜单。Swing菜单由菜单由菜单栏、菜单和菜单项菜单栏、菜单和菜单项构构成。成。菜单栏是所有菜单和菜单项的根菜单栏是所有菜单和菜单项的根353510.4.10菜单菜单3-2JMenuBar是可通过是可通过JFrame、JWindow的

38、根窗格添加至容器的组件。的根窗格添加至容器的组件。由多个由多个JMenu组成,每个组成,每个JMenu在在JMenubar中都表示为字符串。中都表示为字符串。JMenu在在JMenuBar下以文本字符串形式下以文本字符串形式显示,而在用户单击它时,则以弹出式菜单显示,而在用户单击它时,则以弹出式菜单显示。显示。JMenuItem为为JMenu中的一个组件,以文中的一个组件,以文本字符串形式显示,可以具有图标,外观可本字符串形式显示,可以具有图标,外观可以修改,如字体、颜色、背景、边框等以修改,如字体、颜色、背景、边框等。363610.4.10菜单菜单3-3弹出式菜单弹出式菜单JPopupMen

39、u的定义和使用:的定义和使用:方法方法用途用途public JMenuItem add(JMenuItem menuItem)将指定菜单项附加至菜单末尾将指定菜单项附加至菜单末尾public JMenuItem add(String s)使用指定文本新建菜单项,并将其使用指定文本新建菜单项,并将其添加至菜单末尾添加至菜单末尾public void show(Component c, int x, int y)在组件在组件c c的坐标的坐标 ( (x,y) x,y) 位置显示弹位置显示弹出式菜单出式菜单public boolean isPopupTrigger()确定鼠标事件是否为平台的弹出触确定鼠标事件是否为平台的弹出触发器发器373710.4.11对话框对话框1 1JOptionPane对话框对话框 是模式对话框,它提供了很多现成的对话框是模式对话框,它提供了很多现成的对话框样式,可以供用户直接使用。样式,可以供用户直接使用。 2 2JFileChooser对话框对话框 提供了标准的文件的打开、保存对话框提供了标准的文件的打开、保存对话框。3838总结总结1、掌握、掌握GUI常用的容器。常用的容器。2、掌握、掌握GUI常用的布局管理器。常用的布局管理器。3、掌握、掌握GUI常用的组件。常用的组件。4、掌握、掌握GUI的事件处理机制。的事件处理机制。3939

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号