版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022-5-71Java程序设计及程序设计及应用开发教程应用开发教程E-mail:2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术2Java程序设计及应用开发教程构架Java语言以语言以其面向对象其面向对象性、可重用性、可重用性、平台无性、平台无关性、多线关性、多线程、安全可程、安全可靠等特性成靠等特性成为网络程序为网络程序设计中的佼设计中的佼佼者,受到佼者,受到广泛的青睐广泛的青睐三大模块三大模块Java概述与语言基础概述与语言基础Java异常处理异常处理图形用户界面编程图形用户界面编程Java线程机制与线程机制与AppletJavaJava应用开发与课程设计实例
2、应用开发与课程设计实例教参教参Java流程控制及数组与字符串流程控制及数组与字符串高级高级GUI设计技术设计技术输入输出流输入输出流Java网络编程基础网络编程基础Java数据库连接数据库连接第第13-15 章章 应用开发篇应用开发篇 第第1-6 章章基础知识篇基础知识篇 第第7-127-12章章 程序设计篇程序设计篇 面向对象程序设计和继承与多态面向对象程序设计和继承与多态2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术3第第9 9章章GUIGUI菜单设计与菜单设计与SwingSwing组件组件 9.1 布局设计布局设计 9.2 菜单组件菜单组件 9.3 Swing
3、组件组件 9.4 本章小结本章小结 交互式图形用户界面离不开菜单与布局设计,交互式图形用户界面离不开菜单与布局设计,Swing组件和多媒体技术应用使得高级图形用户组件和多媒体技术应用使得高级图形用户界面设计更显生机。本章主要讲述了布局设计的界面设计更显生机。本章主要讲述了布局设计的六种形式及布局管理器组合使用、菜单组件设计、六种形式及布局管理器组合使用、菜单组件设计、组件常用方法、中间容器、组件常用方法、中间容器、Swing组件与多媒体组件与多媒体程序设计基础。程序设计基础。 2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术49.1 布局设计布局设计9.1.1 布局概
4、述布局概述 Java中容器仅仅记录了其所包含的组件,而布局管理器则用于管理组件中容器仅仅记录了其所包含的组件,而布局管理器则用于管理组件在容器中的布局,负责管理容器中的各个组件的排列顺序、位置、组件在容器中的布局,负责管理容器中的各个组件的排列顺序、位置、组件大小等,当窗口移动或改变大小时,就相应改变组件的大小及位置。大小等,当窗口移动或改变大小时,就相应改变组件的大小及位置。 java.awt包定义了包定义了FlowLayout、BorderLayout、CardLayout、GridLayout和和GridBagLayout 5种布局种布局(java.lang.Object的子类的子类),
5、分别对应一种布局策略。,分别对应一种布局策略。 java.swing包中定义了包中定义了BoxLayout、ScrollPanelLayout、ViewportLayout、OverLayout4种布局。不同的布局管理器采用不同的布局策略来放置组件。种布局。不同的布局管理器采用不同的布局策略来放置组件。 本章介绍本章介绍java.awt包中的包中的5种布局类和种布局类和java.swing.border包中的包中的BoxLayout类。类。 9.1.2 FlowLayout布局布局 FlowLayout:流式布局管理器,它是将容器的组件按照加入的先后顺序:流式布局管理器,它是将容器的组件按照加
6、入的先后顺序从左到右依次排列,一行排满后就转到下一行继续从左至右顺序排列;从左到右依次排列,一行排满后就转到下一行继续从左至右顺序排列; 每行中的组件都居中排列,组件间默认的水平和垂直间隙是每行中的组件都居中排列,组件间默认的水平和垂直间隙是5个像素。它个像素。它是是Jpanel与与Applet默认的布局管理策略。默认的布局管理策略。FlowLayout类的主要方法如表类的主要方法如表9-1所示。所示。1例例9-19-1采用采用FlowLayoutFlowLayout布局在窗口中加入左、中、右布局在窗口中加入左、中、右3 3个按钮。个按钮。 。 2022-5-7第第9章章 高级高级GUI设计与
7、多媒体技术设计与多媒体技术59.1.3 BorderLayout布局布局9.1.3 BorderLayout布局布局 BorderLayout称为边界布局管理器,该布局是一种简单的布局策略,是称为边界布局管理器,该布局是一种简单的布局策略,是Window、Frame、Dialog 、JFrame、JDialog的默认布局策略。的默认布局策略。BorderLayout类的方法如表类的方法如表9-2所示。所示。 BorderLayout布局管理器将窗口分为北布局管理器将窗口分为北(North)、东、东(East)、南、南(South)、西西(West)、中、中(Center)五个区域,中间的区域最
8、大。五个区域,中间的区域最大。 【例【例9-2】基于】基于BorderLayout设置设置5个按钮的布局,且当点击按钮时,该按个按钮的布局,且当点击按钮时,该按钮消失。再度点击某按钮时,当前对象消失,恢复前次消失的按钮。钮消失。再度点击某按钮时,当前对象消失,恢复前次消失的按钮。2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术69.1.4 CardLayout布局布局9.1.4 CardLayout布局布局 CardLayout称为卡式布局管理器,该布局可实现多个组件在同一容器区称为卡式布局管理器,该布局可实现多个组件在同一容器区域内重叠放置,交替显示。域内重叠放置,
9、交替显示。CardLayout类的主要方法如表类的主要方法如表9-3所示。所示。 【例【例9-3】采用采用CardLayout布局策略在窗口中加入布局策略在窗口中加入3个带图片显示的按钮。个带图片显示的按钮。9.1.5 GridLayout布局布局 GridLayout称为网格布局管理器,是使用较多的布局管理器,它在一个称为网格布局管理器,是使用较多的布局管理器,它在一个二维的网格中布置组件,其基本布局策略是把容器划分成若干行若干列二维的网格中布置组件,其基本布局策略是把容器划分成若干行若干列的网格区域,每个网格的大小相等,组件就位于这些划分出来的小格中,的网格区域,每个网格的大小相等,组件就
10、位于这些划分出来的小格中,一个网格可以放置一个组件。一个网格可以放置一个组件。CardLayout类的方法如类的方法如表表9-4所示所示。 使用使用GridLayou布局管理器时,需要定义行数和列数。布局管理器时,需要定义行数和列数。使用使用GridLayout布局管理器的一般步骤如下:布局管理器的一般步骤如下:1例例9-4采用采用GridLay布局策略创建含有布局策略创建含有6个按钮的窗口。个按钮的窗口。 2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术79.1.6 GridBagLayout布局布局9.1.6 GridBagLayout布局布局 GridBagLa
11、yout :网格包布局管理器,它采用网格的形式来放置组件,:网格包布局管理器,它采用网格的形式来放置组件,组件的位置和大小由组件的位置和大小由GridBagConstraints类的对象实例决定。类的对象实例决定。 GridBagLayout 布局允许指定的组件跨多行或多列,且行和列不要求同布局允许指定的组件跨多行或多列,且行和列不要求同高或同宽,同时允许组件部分重叠。高或同宽,同时允许组件部分重叠。GridBagLayout类的方法如表类的方法如表9-5所示,所示,GridBagConstraints的常见属性如表的常见属性如表9-6所示。所示。 例例9-5采用采用GridBagLay布局策
12、略创建布局策略创建5个命令按钮按需分为两行的窗口。个命令按钮按需分为两行的窗口。 9.1.7 BoxLayout 布局布局 BoxLayout 称为盒式布局管理器,该布局类用以创建一个盒式布局对象,称为盒式布局管理器,该布局类用以创建一个盒式布局对象,BoxLayout在在java.swing.border包中。包中。 BoxLayout的容器将组件排列在一行或一列,这取决于创建盒式布局对的容器将组件排列在一行或一列,这取决于创建盒式布局对象时,是指定为行排列还是列排列。象时,是指定为行排列还是列排列。 使用行(列)型盒式布局的容器将组件排列成一行(列),组件加入的使用行(列)型盒式布局的容器
13、将组件排列成一行(列),组件加入的先后顺序为从左(上)向右(下)排列,容器两端是剩余的空间。先后顺序为从左(上)向右(下)排列,容器两端是剩余的空间。 与与FlowLayou布局不同的是盒式布局的容器只有一行(列),即使组件再多布局不同的是盒式布局的容器只有一行(列),即使组件再多也只会被改变大小,紧缩在这一行(列)中而不会延伸到下一行(列)。也只会被改变大小,紧缩在这一行(列)中而不会延伸到下一行(列)。BoxLayout类的方法如表类的方法如表9-7所示。所示。 例例9-6采用采用BoxLayout布局策略在窗口中按水平和垂直排列方式添加按钮数组。布局策略在窗口中按水平和垂直排列方式添加按
14、钮数组。 2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术89.1.8 布局管理器组合使用布局管理器组合使用9.1.8 布局管理器组合使用布局管理器组合使用 布局管理器的布局管理器的 组合使用。在此仅枚举一例以资理解。组合使用。在此仅枚举一例以资理解。【例【例9-7】创建一个盒型创建一个盒型_ _流型布局组合应用程序。流型布局组合应用程序。 import javax.swing.*; import java.awt.*;import javax.swing.border.*;class BoxLay00 extends JFrame Box boxS,boxA,box
15、B; BoxLay00() super (盒型盒型_流型布局演示程序流型布局演示程序); boxA=Box.createVerticalBox(); /构建列型盒型布局构建列型盒型布局Box组件组件 boxA.add(new JLabel(输入您的姓名:输入您的姓名:); boxA.add(Box.createVerticalStrut(10); /构建水平构建水平Struct类型间距支撑类型间距支撑 boxA.add(new JLabel(输入您的工号:输入您的工号:);boxA.add(Box.createVerticalStrut(10); boxA.add(new JLabel(“输入
16、您的单输入您的单位:位:”);boxA.add(Box.createVerticalStrut(10); boxA.add(new JLabel(输入电话号码:输入电话号码:); boxB=Box.createVerticalBox(); /构建列型盒型布局构建列型盒型布局Box组件组件 boxB.add(new JTextField(20); boxB.add(Box.createVerticalStrut(10); boxB.add(new JTextField(20); boxB.add(Box.createVerticalStrut(10); boxB.add(new JTextFie
17、ld(20); boxB.add(Box.createVerticalStrut(10); boxB.add(new JTextField(20); boxS=Box.createHorizontalBox(); /构建行型盒型布局构建行型盒型布局Box组件组件 2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术9【例【例9-7】boxS.add(boxA);boxS.add(Box.createHorizontalStrut(8);/构建垂直构建垂直Struct类型间距类型间距 boxS.add(boxB); Container con=getContentPane(
18、); con.setLayout(new FlowLayout(); /构建流型布局构建流型布局Box组件组件 con.add(boxS); con.validate(); con.setBackground(Color.pink); /设置背景颜色设置背景颜色 setBounds(100,100,350,170); /设置框袈大小与位置设置框袈大小与位置 setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public class BoxLay public static void main(String arg
19、s) new BoxLay00(); 程序运行结果如图程序运行结果如图9-7所示。所示。 2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术10 在在Java中,一般菜单格式包含菜单栏(中,一般菜单格式包含菜单栏(MenuBar,Swing 中为中为JMenuBar)类、菜单()类、菜单(Menu,Swing 中为中为JMenu)类、菜单项)类、菜单项(MenuItem,Swing 中为中为JMenuItem)类。)类。 菜单放在菜单栏里,菜单项放在菜单里。菜单栏、菜单、菜单项的构造菜单放在菜单栏里,菜单项放在菜单里。菜单栏、菜单、菜单项的构造方法与一般方法如表方法与一
20、般方法如表9-8与表与表9-9所示。所示。 9.2.1 菜单栏菜单栏 菜单栏是用来管理菜单的,只能被添加到菜单栏是用来管理菜单的,只能被添加到Frame对象中,作为整个菜单对象中,作为整个菜单树的根基,不参与交互操作。树的根基,不参与交互操作。 JComponent类的子类类的子类JMenuBar是负责创建菜单栏(是负责创建菜单栏(AWT中由中由MenuBar负责创建,本教材主要讲述负责创建,本教材主要讲述Swing组件下菜单的创建过程)组件下菜单的创建过程)菜单栏由菜单栏由JmenuBar派生。菜单栏的方法如表如表派生。菜单栏的方法如表如表9-8与表与表9-9所示。所示。9.2.2 菜单菜单
21、 菜单是用来存放与整合菜单项的组件。菜单是用来存放与整合菜单项的组件。 菜单栏菜单栏JComponent类的子类类的子类JMenu类是负责创建菜单的,即菜单是由类是负责创建菜单的,即菜单是由Jmenu派生(派生(AWT中由中由Menu负责创建)。负责创建)。 它的实例就是一个菜单。菜单可以是单层的菜单,也可多层结构的。它的实例就是一个菜单。菜单可以是单层的菜单,也可多层结构的。菜单的构造方法与一般方法如菜单的构造方法与一般方法如9-8与表与表9-9所示。所示。9.2 菜单组件菜单组件 2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术11菜单项是菜单系统的基本组件,是用
22、户最终选择的项目。菜单项是菜单系统的基本组件,是用户最终选择的项目。 JMenuItem负责创建菜单项负责创建菜单项(AWT中由中由MenuItem负责创建负责创建)JMenultem的一个实例就是一个菜单项,菜单项放在菜单里。的一个实例就是一个菜单项,菜单项放在菜单里。通常,菜单项是通常,菜单项是JMenultem或或Menultem。 此外尚可以使用带复选框和单选按钮的菜单项:此外尚可以使用带复选框和单选按钮的菜单项: 即即:JCheckBoxMenuItem或或CheckBoxMenuItem和和JRadioButtonMenuItem或或RadioButtonMenuItem. 例如,
23、创建单选按钮菜单项例如,创建单选按钮菜单项“JRadio”,并将其添加到,并将其添加到“Sch”菜单中。菜单中。ButtonGroup group=new ButtonGroup();JRadioButtonMenuItem SchItem = new JRadioButtonMenuItem(JRadio);group.add(SchItem);SCHMenu.add(SchItem);9.2.4 弹出式菜单弹出式菜单 弹出式菜单(弹出式菜单(JpopupMenu或或PopupMenu)是一种特殊的菜单,是可以四处浮动显)是一种特殊的菜单,是可以四处浮动显示,是依附于某个容器或组件,单击鼠标
24、右键时显示,可用示,是依附于某个容器或组件,单击鼠标右键时显示,可用add()方法加入组件方法加入组件例如例如,创建弹出式菜单创建弹出式菜单:popup, 且新建弹出式菜单中的且新建弹出式菜单中的“new“菜单项和监听器菜单项和监听器JPopupMenu popup = new JPopupMenu();JMenuItem newItemPop = new JMenuItem(工资管理程序弹出式菜单工资管理程序弹出式菜单);popup.add(newItemPop9.2.5 菜单创建步骤菜单创建步骤 9.2.3 菜单项菜单项 2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒
25、体技术12 Swing API被封装成许多包,这些包组成如表被封装成许多包,这些包组成如表9-10所示,它们可以相应地所示,它们可以相应地支持各种功能,例如组件、用户界面外观、事件等等,支持各种功能,例如组件、用户界面外观、事件等等,Swing组件的类及组件的类及其类间继承关系如图其类间继承关系如图9-10所示。所示。 9.3 Swing组件组件 图8-1 java.awt包中常用类及其类间继承关系2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术149.3.1 组件常用方法组件常用方法 1. 组件的颜色组件的颜色组件颜色设置的常用方法如下:组件颜色设置的常用方法如下:
26、 组件背景色的设置方法为:组件背景色的设置方法为:public void setBackground(Color c); 组件前景色的设置方法为:组件前景色的设置方法为:public void setForeground(Color c); 组件背景色的获取方法为:组件背景色的获取方法为:public Color getBackground(Color c); 组件前景色的获取方法为:组件前景色的获取方法为:public Color getForeground(Color c); 2. 组件的字体组件的字体 组件字体的设置方法为:组件字体的设置方法为:public void setFont(F
27、ont f); 组件字体的获取方法为:组件字体的获取方法为:public Font getFont(Font f);3. 组件的边框组件的边框 组件边框的设置方法为:组件边框的设置方法为:public void setBorder(Border border); 组件边框的获取方法为:组件边框的获取方法为:public Border getBorder();4. 组件的透明组件的透明 public void setOpaque(boolean isOpaque): 设置组件的透明性,当参数设置组件的透明性,当参数isOpaque 取取false时组件被设置为透明,取时组件被设置为透明,取tru
28、e时组件被设置为不透明。时组件被设置为不透明。 public boolean isOpaque():获取组件的透明性,当组件透明时该方法返回获取组件的透明性,当组件透明时该方法返回false,否则返回,否则返回true。 2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术159.3.1 组件常用方法组件常用方法5. 组件的大小与位置组件的大小与位置 public void setSize(int width,int height): 设置组件的大小,参数设置组件的大小,参数width指指定组件的宽度,定组件的宽度,height指定组件的高度。指定组件的高度。 publi
29、c void setLocation(int x,int y): 设置组件在容器中的位置及坐标系,设置组件在容器中的位置及坐标系, 容器坐标系的左上角是(容器坐标系的左上角是(0,0),参数),参数x和和y指定该组件的左上角在容器的指定该组件的左上角在容器的坐标系中距容器的左边界坐标系中距容器的左边界x个像素,距容器上边界个像素,距容器上边界y个像素。个像素。 public Dimension getSize(): 返回一个返回一个Dimension对象下组件的宽度对象下组件的宽度width值、组件的高度值、组件的高度height值。值。 public Point getLocation(in
30、t x,int x): 返回一个含有成员变量返回一个含有成员变量x和和y的的Point对象的引用,对象的引用,x和和 y的值就是组件的左上角在容器坐标系中的的值就是组件的左上角在容器坐标系中的x坐标和坐标和y坐标。坐标。 public void setBounds(int x,int x int width,int height): 设置组件在容器中设置组件在容器中的位置和组件的大小,该方法相当于的位置和组件的大小,该方法相当于setsize()和和setLocation()方法的组合方法的组合 public Rectangle getBounds (): 返回一个含有成员变量返回一个含有成员
31、变量x、y、width和和 height的的Rectangle对象的引用,其中对象的引用,其中x和和 y值就是当前组件左上角在容器值就是当前组件左上角在容器坐标系中的坐标系中的x和和y坐标,坐标,width和和height的值就是当前组件的宽度和高度。的值就是当前组件的宽度和高度。 6. 组件激活与可见性组件激活与可见性(setEnabled(boolean b): 、setVisible(boolean) ) 1【例【例9-9】Swing组件常用方法实例组件常用方法实例 2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术169.3.2 JFrame窗体窗体 JFram
32、e是一个框架(窗体)容器。是一个框架(窗体)容器。Swing包中的包中的JFrame类与类与AWT包中的包中的Frame类都与创建窗口有关。类都与创建窗口有关。 javax.swing包中的包中的JFrame类是类是Frame类的子类,是从类的子类,是从Frame类派生的,类派生的,JFrame类及其子类创建的对象是窗体。类及其子类创建的对象是窗体。JFrame类的主要方法如表类的主要方法如表9-11所示。所示。9.3.3 标签与文本组件标签与文本组件 1标签组件标签组件 标签组件标签组件JLabel类与前面讲解了类与前面讲解了AWT包中的包中的Label类,它们有一个共同特点类,它们有一个共
33、同特点是是静态组件,只能显示文字而不能够对文字进行编辑。是是静态组件,只能显示文字而不能够对文字进行编辑。2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术179.3.3 标签与文本组件标签与文本组件2文本组件文本组件 Swing中文字输入主要使用文本组件。文本组件包括:中文字输入主要使用文本组件。文本组件包括:JTextField类、类、JTextArea类和类和JPasswordFieId类。其中:类。其中:JTextField定义一个可以输入单行文字的矩形区域文本框的;定义一个可以输入单行文字的矩形区域文本框的;JTextArea定义一个可以输入多行文字内容的矩形
34、区域文本框;定义一个可以输入多行文字内容的矩形区域文本框;JPasswordField可以建立一个密码框对象。密码框可以使用可以建立一个密码框对象。密码框可以使用setEchoChar(char c)设置回显字符(默认的回显字符是设置回显字符(默认的回显字符是*),),chargetPassword()方法可返回密码框中的密码。方法可返回密码框中的密码。1JtextField、JTextArea类的主要方法如表类的主要方法如表9-13所示。所示。 3事件机制事件机制 Java组件的使用除了解组件的属性和功能外,尚需关注组件上发生的事件。组件的使用除了解组件的属性和功能外,尚需关注组件上发生的事
35、件。 掌握事件源、监视器、处理事件的接口这三个概念。掌握事件源、监视器、处理事件的接口这三个概念。 1【例【例9-10】JtextField与与JpasswordField的使用。的使用。 9.3.4 按钮组件按钮组件 按钮(按钮(JButton)都是由)都是由AbstractButton类派生的。类派生的。 Swing中的按钮的功能较中的按钮的功能较AWT中的按钮功能强大,包括有给按钮添加图像、中的按钮功能强大,包括有给按钮添加图像、使用快捷键以及设置按钮的对齐方式,还可以将多个图像分配给一个按钮以使用快捷键以及设置按钮的对齐方式,还可以将多个图像分配给一个按钮以处理鼠标在按钮上的停留等。处
36、理鼠标在按钮上的停留等。JButton类的主要方法如表类的主要方法如表9-14所示。所示。2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术189.3.5 复选框与单选按钮复选框与单选按钮 复选框由复选框由JCheckBox类派生,它提供类派生,它提供“选中选中/未选中未选中”或或“ON/OFF”两种两种状态,当用户单击复选框时改变切换复选框原来设置的状态。状态,当用户单击复选框时改变切换复选框原来设置的状态。 单选按钮是由单选按钮是由JRadioButton类派生,它是指一组按钮中,用户只能选择其类派生,它是指一组按钮中,用户只能选择其中一个按钮,当用户选上时,此按钮
37、的状态为中一个按钮,当用户选上时,此按钮的状态为“选中或选中或ON”,其余的都是,其余的都是“未选中或未选中或OFF”状态。状态。 ButtonGroup类为类为JRadioButton类等提供多选一功能。当创建了若干个单类等提供多选一功能。当创建了若干个单选按钮后,应使用选按钮后,应使用ButtonGroup再创建一个对象,然后利用这个对象把这再创建一个对象,然后利用这个对象把这若干个单选按钮归组。归到同一组的单选按钮每一时刻只能选一。单选按若干个单选按钮归组。归到同一组的单选按钮每一时刻只能选一。单选按钮和复选框一样,也触发钮和复选框一样,也触发ItemEvent事件。事件。 复选框方法如
38、表复选框方法如表9-15所示。所示。Swing中单选按钮和复选框很类似,单选按钮中单选按钮和复选框很类似,单选按钮JradioButton类的构造方法与一般类方法与复选框类的构造方法与一般类方法与复选框JcheckBox类似,故省略。类似,故省略。1【例【例9-12】单选按钮的创建。单选按钮的创建。9.3.6 下拉列表组件下拉列表组件 下拉列表框是由下拉列表框是由JComboBox类派生,其特点是将所有选项折叠收藏起来,类派生,其特点是将所有选项折叠收藏起来,只显示最前面的那个或被用户选中的某个,只显示最前面的那个或被用户选中的某个,主要方法如表主要方法如表9-16所示所示。 下拉式列表事件源
39、可以发生下拉式列表事件源可以发生ItemEvent事件。当下拉列表获得监视器后,事件。当下拉列表获得监视器后,用户在下拉列表选项中选中某个选项时就发生用户在下拉列表选项中选中某个选项时就发生ItemEvent事件,该事件类事件,该事件类将自动创建一个事件对象。将自动创建一个事件对象。1例例9-13创建下拉列表框并实现其事件处理。创建下拉列表框并实现其事件处理。 2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术193.6 下拉列表组件下拉列表组件实例2列表组件列表组件 列表框是由列表框是由JList类派生,它与上面所述的下拉列表框类似,只是下拉列类派生,它与上面所述的下
40、拉列表框类似,只是下拉列表框一次只能选择一项,而列表框可以选择多项,选择多项的方法与拷贝表框一次只能选择一项,而列表框可以选择多项,选择多项的方法与拷贝文件类似,按住文件类似,按住shift或或Ctrl键然后移动鼠标进行选择即可。键然后移动鼠标进行选择即可。JList类的主要类的主要方法如表方法如表9-17所示。所示。 【例【例9-14】创建列表框并实现其事件处理。创建列表框并实现其事件处理。 import java.awt.*;import java.awt.event.*; import javax.swing.*;import javax.swing.event.*; public cl
41、ass JList1 extends JFrame /例题实现例题实现JList类的编程类的编程 private JList images; private JLabel jlabel0; private String names =book.gif,EARTH.GIF,BIRD.GIF,Car1.gif,Car2.gif, CLOCK.GIF; private Icon icons = new ImageIcon (names 0), new ImageIcon (names 1), new ImageIcon (names2), new ImageIcon (names 3), new I
42、mageIcon (names4), new ImageIcon (names 5),; / 创建图表数组对象创建图表数组对象icons ,其图标文件名对应字符串数组对象其图标文件名对应字符串数组对象name public JList1 ( ) super (列表显示图形文件列表显示图形文件); Container c=getContentPane ( ); c.setLayout (new FlowLayout ( ); images=new JList (names); / 创建下拉列表框对象创建下拉列表框对象images images.setVisibleRowCount (3); /
43、最多显示最多显示3行行2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术20例例9-14 images.setSelectionMode (ListSelectionModel.SINGLE_SELECTION); c.add (new JScrollPane (images); /将将images对象放入对象放入JScrollPane到容器中到容器中 jlabel0=new JLabel (icons0);c.add (jlabel0); / 加入标签对象加入标签对象 images.addListSelectionListener (new ListSelection
44、Listener ( ) /监听者向监听者向images对象注册,实现对象注册,实现ListSelectionListener()接口类的方法接口类的方法ValueChanged public void valueChanged (ListSelectionEvent e) jlabel0.setIcon(iconsimages.getSelectedIndex() ); / 根据根据getSelectedIndex ( )方法的值得到下拉列表框的选项值方法的值得到下拉列表框的选项值 ); setSize (340, 450); show ( ); public static void mai
45、n (String args ) JList1 app=new JList1 ( ); app.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit (0); ); 2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术219.3.7 表格组件表格组件 表格(表格(JTable)是)是Swing新增加的组件,主要功能是把数据以二维表格的新增加的组件,主要功能是把数据以二维表格的形式显示出来形式显示出来,使用使用JTable可以创建一个表格对象。可以
46、创建一个表格对象。JTable类的主要方法类的主要方法如表如表9-18所示。所示。 注:用户在表格单元中输入的数据都被认为是一个注:用户在表格单元中输入的数据都被认为是一个Object对象,用户通对象,用户通过表格可对表格单元中的数据进行编辑修改,在表格中输入或修改数据过表格可对表格单元中的数据进行编辑修改,在表格中输入或修改数据后,需按回车键或用鼠标单击表格的单元格确定所输入或修改的结果。后,需按回车键或用鼠标单击表格的单元格确定所输入或修改的结果。 当表格需要刷新显示时,调用当表格需要刷新显示时,调用repaint()方法。表格中的数据将以行和列方法。表格中的数据将以行和列的形式显示数组的
47、形式显示数组data每个单元中对象的字符串表示每个单元中对象的字符串表示表格中对应着表格中对应着data单元中对象的字符串表示。单元中对象的字符串表示。参数参数columnName用来指定表格的列名。用来指定表格的列名。例例9-15职工加班工资计算表设计。职工加班工资计算表设计。 2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术229.3.8 进度条组件进度条组件 进度条组件(进度条组件(JProgressBar类)提供了直观的图形化进度提示信息。类)提供了直观的图形化进度提示信息。 JProgressBar类可用于创建进度条组件。该组件能用一种颜色动态地填充,类可用
48、于创建进度条组件。该组件能用一种颜色动态地填充,从而显示某任务完成的百分比。从而显示某任务完成的百分比。JProgressBar类的主要方法如表类的主要方法如表9-19所示。所示。 进度条的最大值并不是进度条的长度,进度条的长度依赖于放置它的布局和进度条的最大值并不是进度条的长度,进度条的长度依赖于放置它的布局和本身是否使用了本身是否使用了setSize()设置。进度条的设置。进度条的max是指将进度条平均分成是指将进度条平均分成max份。份。若使用若使用JProgressBar()创建进度条创建进度条JP_bar,那么,那么JP_bar默认被平均分成默认被平均分成100等分,若调用了方法等分
49、,若调用了方法JP_bar.setValue(20)后,进度条的颜色条就填充后,进度条的颜色条就填充了整个长条矩形的了整个长条矩形的20(20/100);如果进度条的最大值被设置成;如果进度条的最大值被设置成1000,那,那么这时进度条的颜色条就填充了整个长条矩形的么这时进度条的颜色条就填充了整个长条矩形的201000,即,即2。使用。使用setValue(int n)方法时,方法时,n不能小于不能小于min;大于;大于max。 1【例【例9-16】创建进度条并实现其事件处理】创建进度条并实现其事件处理 9.3.9 树组件树组件 【例【例9-17】树组件应用程序。树组件应用程序。 JTree类
50、的实例称为树组件。类的实例称为树组件。javax.swing.tree包中提供了一个类接口包中提供了一个类接口MutablellreeNode来实现创建并成为树节点的对象。来实现创建并成为树节点的对象。 Java提供的提供的DefaultMutableTreeNode类是实现了类是实现了MutableTreeNode接口的类,接口的类,可以使用这个类为要创建的树准备节点。该类的两个常用的构造方法为:可以使用这个类为要创建的树准备节点。该类的两个常用的构造方法为: DefaultMutableTreeNode(Object userObject); 该方法创建的节点默认可该方法创建的节点默认可以
51、有子节点,即可使用以有子节点,即可使用add()方法添加其他节点作为它的子节点。方法添加其他节点作为它的子节点。DefaultMutableTreeNode(Object userObject, boolean allowChildren);2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术239.3.10 中间容器中间容器 Swing的中间容器主要包括的中间容器主要包括JPane面板、面板、JScrollPane滚动窗格、滚动窗格、JSplitPane拆分窗格、拆分窗格、JLayeredPane分层窗格、分层窗格、JtoolBar等。等。1JPanel面板面板 在设计
52、用户界面时,可考虑将所需组件先排列在一个容器中(如在设计用户界面时,可考虑将所需组件先排列在一个容器中(如AWT中的中的Panel面板和面板和Swing中的中的JPanel面板),然后将该面板作为整体嵌入面板),然后将该面板作为整体嵌入窗口,即添加到底层容器或其他中间容器中。窗口,即添加到底层容器或其他中间容器中。JPanel是一类无边框、不能移动、放大、缩小或关闭的容器。是一类无边框、不能移动、放大、缩小或关闭的容器。 通常将通常将JPanel对象是作为一个容器加入到对象是作为一个容器加入到JFrame或或JApplet等容器中,等容器中,当然当然JPanel也可以加入到也可以加入到JPan
53、el中。中。JPanel的大小是由包含在的大小是由包含在JPanel中的组件、容器的布局策略所决定。中的组件、容器的布局策略所决定。 JPanel类构造方法:类构造方法:JPanel ()可以用来构造一个默认布局为可以用来构造一个默认布局为FlowLayout的面板对象;的面板对象;JPanel 可用来构造一种可用来构造一种layout布局的面板对象。布局的面板对象。1【例【例9-189-18】JPanelJPanel面板与布局程序实例。面板与布局程序实例。2. JScrollPane窗格窗格 3. JSplitPane窗格窗格4. JLayeredPane分层窗格分层窗格 5.JToolBa
54、r工具栏工具栏2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术249.3.11 多文档界面多文档界面5. JToolBar工具栏工具栏 JtoolBar是用于显示常用工具控件的容器。用户可以拖拽出一个独立的可显是用于显示常用工具控件的容器。用户可以拖拽出一个独立的可显示工具控件的窗口,设置相关属性示工具控件的窗口,设置相关属性(水平水平/垂直显示垂直显示JToolBar.HORIZONTAL L 、JToolBar.VERTICA)与方法。常用方法有:与方法。常用方法有:JToolBar(String name); 工具栏构造方法。工具栏构造方法。getCompone
55、ntIndex(Component c); 返回一个组件序号的方法返回一个组件序号的方法 getComponentAtIndex(int i); 获取指定组件序号的方法。获取指定组件序号的方法。1【例【例9-19】工具栏(工具栏(JToolBar)程序设计实例。)程序设计实例。 9.3.11多文档界面多文档界面 Swing提供两种分层面板:提供两种分层面板:JlayeredPane和和JDesktopPane。 JDesktopPane是是JLayeredPane的子类,专门为容纳内设置的子类,专门为容纳内设置JInternalFrame Java实现多文档界面(实现多文档界面(MDI)常用的
56、方式是在一个)常用的方式是在一个JFrame窗口中添加若干窗口中添加若干个被限制在个被限制在JFrame中的内部窗体(中的内部窗体(JInternalFrame)使用时需要将内部窗体事先添加使用时需要将内部窗体事先添加到到JDesktopPane桌面容器中。桌面容器中。一个桌面容器可以添加若干个被限制其中的内部窗体一个桌面容器可以添加若干个被限制其中的内部窗体把桌面容器添加到把桌面容器添加到JFrame窗口即可。窗口即可。1JDesktopPane与与JInternalFrame类的主要方法如类的主要方法如8.30所示。所示。 9.3.12 JOptionPane和和JDialog对话框对话框
57、 Swing使用使用JOptionPane类提供现成的对话框,如消息、确认对话框等。类提供现成的对话框,如消息、确认对话框等。 若若JOptionPane提供的对话框还未满足需要,可使用提供的对话框还未满足需要,可使用JDialog自行设计对话框自行设计对话框2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术259.3.11 多文档界面多文档界面01对话框的模式与方法对话框的模式与方法 对话框分为模式(对话框分为模式(modal)和非模式()和非模式(non-modal)两种。)两种。模式对话框就系指对话框程序必须确认才能继续运行。如:信息对话模式对话框就系指对话框程序
58、必须确认才能继续运行。如:信息对话框、确认对话框、输入对话框、口令对话框等。框、确认对话框、输入对话框、口令对话框等。非模式对话框就是指显示对话框后,用户可以不用关闭此对话框就可非模式对话框就是指显示对话框后,用户可以不用关闭此对话框就可继续程序的运行,如查找继续程序的运行,如查找/替换对话框、插入符号对话框等。替换对话框、插入符号对话框等。 Swing中对话框的主要方法如表中对话框的主要方法如表9-23所示。所示。2JOptionPane对话框对话框 JOptionPane 类提供多种可供用户使用的对话框及相应的静态方法,指定类提供多种可供用户使用的对话框及相应的静态方法,指定该方法中的有关
59、参数,就可以很容易的引用该方法中的有关参数,就可以很容易的引用JOptionPane 类赋予的对话框。类赋予的对话框。 JOptionPane对话框分为如下对话框分为如下4种类型:种类型:信息对话框:信息对话框:showMesageDialog,用于向用户显示一些消息。,用于向用户显示一些消息。确认对话框:确认对话框:showConfirmDialog,用于向用户提问一个要求确认的信,用于向用户提问一个要求确认的信息,并可得到息,并可得到YES/NO/CANCEL响应。响应。输入对话框:输入对话框:showInputDialog,用于提示用户进行数据输入。,用于提示用户进行数据输入。选择对话框
60、:选择对话框:showOptionDialog:可供用户选择的对话框。:可供用户选择的对话框。 这些方法中通过返回一个整数值来表示用户点击了哪个按钮,有效值有这些方法中通过返回一个整数值来表示用户点击了哪个按钮,有效值有YES_OPTION、NO_OPTION、CANCEL_OPTION、OK_OPTION和和CLOSED_OPTION。这些都是必须关闭才能运行的模式对话框,实际上。这些都是必须关闭才能运行的模式对话框,实际上大部分对话框都是模式对话框。大部分对话框都是模式对话框。2022-5-7第第9章章 高级高级GUI设计与多媒体技术设计与多媒体技术269.3.11 多文档界面多文档界面1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 废料回收利用合同范本
- 资产交易合同格式
- 忠诚伙伴的养护承诺
- 物料采购招标文件范本
- 物业服务合同续签的申请要点
- 玻璃产品质量保证书解读
- 货运代理合作协议
- 混凝土施工分包合同
- proe课程设计带图纸
- plc钻床课程设计报告
- 2024年贵州省贵阳修文县事业单位招聘133人历年管理单位遴选500模拟题附带答案详解
- 读书分享《非暴力沟通》课件(图文)
- 2024-2030年中国家禽饲养行业发展前景预测和投融资分析报告
- 2024-2030年中国净菜加工行业市场营销模式及投资规模分析报告
- 国开2024年秋《机电控制工程基础》形考任务3答案
- 【WEZO】2024社交媒体全球使用趋势报告
- 美学与人生智慧树知到期末考试答案2024年
- GB/T 3953-2024电工圆铜线
- GB/T 11379-2008金属覆盖层工程用铬电镀层
- 食材供应商考核评分表
- 形式发票--INVOICE(跨境-)
评论
0/150
提交评论