第5讲 图形用户界面设计_第1页
第5讲 图形用户界面设计_第2页
第5讲 图形用户界面设计_第3页
第5讲 图形用户界面设计_第4页
第5讲 图形用户界面设计_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第第5讲讲 图形用户界面设计图形用户界面设计主要内容主要内容p AWT和和Swingp 容器容器p 布局布局p Swing组件组件 p Java图形设计图形设计p 事件处理事件处理 2AWT和和Swing组件组件 AWT: Abstract Window Toolkit(抽象窗口工具集)抽象窗口工具集) 图形界面是平台相关的;图形界面是平台相关的;AWT是重量级的,依赖是重量级的,依赖本地代码实现。不同平台外观有差异,不同平台运本地代码实现。不同平台外观有差异,不同平台运行行AWT程序可能有不同的程序可能有不同的bug,有违,有违java“一次编写,一次编写,到处运行到处运行”口号。口号。

2、Swing:轻量级纯:轻量级纯JAVA的图形库。基于的图形库。基于AWT,更丰,更丰富,功能更强大。不同平台外观一致。富,功能更强大。不同平台外观一致。在在AWT组件组件的类名前加的类名前加“J”。“重量级重量级”组件与组件与“轻量级轻量级”组件一同使用时,如组件一同使用时,如果组件区域有重叠,则果组件区域有重叠,则“重量级重量级”组件总是显示组件总是显示在上面在上面 3常用的图形组件常用的图形组件 AWT: java.awt.* Lable、Button 、List 、TextField. Frame 、Panel 、Container Swing: javax.swing.* JLable

3、、JButton 、JList 、JTextField. JFrame 、JPanel 不要在容器中混合使用不要在容器中混合使用AWT和和Swing组件组件4容器容器 JavaJava的图形用户界面由的图形用户界面由组件组件构成,例如按钮构成,例如按钮(buttonbutton)、文本输入框()、文本输入框(textfieldtextfield)、)、标签(标签(labellabel)等都是组件,其中有一类特)等都是组件,其中有一类特殊的组件称为殊的组件称为容器容器(containercontainer),例如框),例如框架(架(frameframe)、面板()、面板(panelpanel)等

4、。)等。 容器容器是组件的容器,各种组件(包括容器)是组件的容器,各种组件(包括容器)可以通过可以通过add()add()方法添加到容器中方法添加到容器中 5顶层容器顶层容器 顶层(顶层(Top level)容器)容器 所有组件都必须包含在某个容器中,而有些容器所有组件都必须包含在某个容器中,而有些容器是可以嵌套的,在这个嵌套层次的最外层,必须是可以嵌套的,在这个嵌套层次的最外层,必须是一个顶层(是一个顶层(Top level)容器)容器 四种顶层容器四种顶层容器(Swing组件中的重量级组件)组件中的重量级组件) JFrame、JApplet、JDialog和和Jwindow JFrame是

5、一个带有标题行和控制按钮(最小化、是一个带有标题行和控制按钮(最小化、恢复恢复/最大化、关闭)的独立窗口,最大化、关闭)的独立窗口,创建应用程创建应用程序时需要使用序时需要使用JFrame。创建小应用程序时使用创建小应用程序时使用JApplet,它被包含在浏览器窗口中。,它被包含在浏览器窗口中。创建对话创建对话框时使用框时使用JDialog。JWindow是一个不带有标题是一个不带有标题行和控制按钮的窗口,因此通常很少使用行和控制按钮的窗口,因此通常很少使用 6例例1:应用:应用JFrame类建立一个窗体类建立一个窗体 import java.awt.*; import javax.swing

6、.*; public class JFrameDemo public static void main(String s ) JFrame frame = new JFrame(JFrameDemo); /创建一个创建一个JFrame的实例的实例 JButton button = new JButton(Press me); /创建一个创建一个JButton的实例的实例 frame.getContentPane().add(button, BorderLayout.CENTER); /将将JButton放到放到JFrame的中央的中央 frame.pack(); /将将JFrame设置到适当的

7、大小设置到适当的大小 frame.setVisible(true); /显示显示JFrame 7将组件放入内容窗格将组件放入内容窗格 顶层容器都有一个顶层容器都有一个内容窗格(内容窗格(ContentPane) 顶层容器中除菜单之外的组件都是放在这个内容窗格顶层容器中除菜单之外的组件都是放在这个内容窗格中中 方法一:通过顶层容器的方法一:通过顶层容器的getContentPane()方法获得方法获得其缺省的内容窗格,然后将组件添加到内容窗格中。其缺省的内容窗格,然后将组件添加到内容窗格中。例如:例如:Container contentPane = frame.getContentPane();

8、 contentPane.add(button, BorderLayout.CENTER); 或或frame.getContentPane().add(button, BorderLayout.CENTER);8将组件放入内容窗格将组件放入内容窗格 方法二:方法二:创建一个新的内容窗格取代顶层容器缺省创建一个新的内容窗格取代顶层容器缺省的内容窗格。通常是创建一个的内容窗格。通常是创建一个JPanel的实例,然的实例,然后将组件添加到后将组件添加到JPanel实例中,再通过顶层容器实例中,再通过顶层容器的的setContentPane()方法将方法将JPanel实例设置为新实例设置为新的内容窗格

9、,例如:的内容窗格,例如: JPanel contentPane = new JPanel(); contentPane.setLayout(new BorderLayout(); contentPane.add(button, BorderLayout.CENTER); frame.setContentPane(contentPane);思考:使用方法二实现例思考:使用方法二实现例1功能功能9面板面板(JPanel) 面板(面板(JPanel)是一种用途广泛的容器)是一种用途广泛的容器 与顶层容器不同的是,面板不能独立存在,必须被与顶层容器不同的是,面板不能独立存在,必须被添加到其他容器内部

10、添加到其他容器内部 面板可以嵌套,由此可以设计出复杂的图形用户界面板可以嵌套,由此可以设计出复杂的图形用户界面面 JPanel panel = new JPanel(); panel.setBackground(Color.yellow); panel.add(button);10布局管理器布局管理器 布局管理器控制组件在容器中的大小、形状布局管理器控制组件在容器中的大小、形状和位置。和位置。 每一个容器都有一个默认的布局管理器,也可以通每一个容器都有一个默认的布局管理器,也可以通过过setLayout()方法方法来设置其他布局管理器。来设置其他布局管理器。 布局管理器:布局管理器:FlowL

11、ayout、BorderLayout、GridLayout、GridBagLayout、CardLayout、null 11FlowLayout布局管理器布局管理器 1、FlowLayout流式布局流式布局 FlowLayout布局管理是一种最简单的布布局管理是一种最简单的布局管理方法,是局管理方法,是JPanel的默认布局的默认布局 它将组件按每行先后自左向右放置,一行它将组件按每行先后自左向右放置,一行放不下时再换行放不下时再换行 FlowLayout的默认对齐方式为的默认对齐方式为居中对齐居中对齐 12FlowLayout布局管理器布局管理器 构造函数:构造函数: FlowLayout(

12、):():创建默认的创建默认的FlowLayout布局管理器。布局管理器。 FlowLayout(int align ):以指定的对齐方式创建:以指定的对齐方式创建FlowLayout布局管理器。布局管理器。其中的参数有:其中的参数有:FlowLayout.LEFT(左对齐左对齐)、 FlowLayout.RIGHT(右对齐)、(右对齐)、 FlowLayout.CENTER(居中对齐)。(居中对齐)。 FlowLayout(int align, int hgap, int vgap) :以指定的对:以指定的对齐方式及间距创建齐方式及间距创建FlowLayout布局管理器。其中第一个布局管理器

13、。其中第一个参数为参数为对齐方式对齐方式,第二个参数为,第二个参数为组件行间距组件行间距,第三个参,第三个参数为数为列间距列间距。13FlowLayout布局管理器布局管理器示例:示例:setLayout(new FlowLayout(FlowLayout.RIGHT,20,40);setLayout(new FlowLayout(FlowLayout.LEFT);setLayout(new FlowLayout( );14FlowLayout布局管理器布局管理器 【例例2】编写关于编写关于FlowLayout布局的窗框程序,在布局的窗框程序,在窗框中放置多个个按钮、标签和文本框。窗框中放置多

14、个个按钮、标签和文本框。 程序代码:程序代码:Example2.java15BorderLayout布局管理器布局管理器 2、 BorderLayout边界布局管理器边界布局管理器 BorderLayout是是顶层容器中内容窗格顶层容器中内容窗格的默认布的默认布局局 它将整个容器的区域分为它将整个容器的区域分为东、西、南、北、中东、西、南、北、中五五个部分。加入组件时,需指明放置的位置个部分。加入组件时,需指明放置的位置 。 在在BorderLayout 布局管理器的管理下,组件必须布局管理器的管理下,组件必须通过通过add( )方法方法加入到容器的五个命名区域之一。加入到容器的五个命名区域之

15、一。在容器的每个区域,只能加入一个组件。在容器的每个区域,只能加入一个组件。16BorderLayout布局管理器布局管理器 构造函数构造函数 BorderLayout():创建默认的():创建默认的BorderLayout。 BorderLayout(int, int):以指定的行间距和列间距创建):以指定的行间距和列间距创建BorderLayout。 在在BorderLayout布局的容器中放置组件,可调用布局的容器中放置组件,可调用add()方法,例如:方法,例如: 容器对象容器对象.add(组件组件, BorderLayout.SOUTH);17BorderLayout布局管理器布局管

16、理器 【例例3】编写关于编写关于BorderLayout边框布局的窗框程边框布局的窗框程序,在窗框中放置序,在窗框中放置6个按钮,其中南边放置个按钮,其中南边放置2个按钮。个按钮。 程序代码:程序代码:BorderLayoutDemo.java18GridLayout布局管理器布局管理器 3、GridLayout网格布局网格布局 GridLayout是一种网格式的布局管理器,将容器区域划是一种网格式的布局管理器,将容器区域划分成分成m行行*n列的大小相等的格子,而容器中的组件就放列的大小相等的格子,而容器中的组件就放入这些格子中,占用大小完全相同的一格。入这些格子中,占用大小完全相同的一格。构

17、造函数:构造函数: GridLayout():():创建默认的创建默认的GridLayout布局,所有布局,所有组件在一行中显示。组件在一行中显示。 GridLayout(int rows, int cols):):按指定行数和列数按指定行数和列数创建创建GridLayout布局。布局。 GridLayout(int rows, int cols, int hgap, int vgap ):):按指定行数、列数、行间距和列间距创建按指定行数、列数、行间距和列间距创建GridLayout布布局。局。19GridLayout布局管理器布局管理器 【例例4】编写一个编写一个4行行2列的列的GridL

18、ayout网格布局程网格布局程序,可以用来保存学生的基本信息。序,可以用来保存学生的基本信息。 程序代码:程序代码:GridLayDemo.java20CardLayout布局管理器布局管理器 4、CardLayout卡片布局卡片布局 一种一种卡片式卡片式的布局管理器,将容器中的组件(通常的布局管理器,将容器中的组件(通常是面板)像扑克牌一样排列,里面放置多张叠放在是面板)像扑克牌一样排列,里面放置多张叠放在一起的卡片(组件),每次只能显示最上面的一张。一起的卡片(组件),每次只能显示最上面的一张。 执行卡片布局执行卡片布局next等方法翻看卡片。等方法翻看卡片。 构造函数构造函数 CardL

19、ayout():():创建默认的创建默认的CardLayout布局布局管理器。管理器。 CardLayout(int rows, int cols):):以指定的行以指定的行间距和列间距创建间距和列间距创建CardLayout布局管理器。布局管理器。21CardLayout布局管理器布局管理器 主要方法:主要方法: void first() 显示第一个加入到显示第一个加入到CardLayout的组的组件件 void last()显示最后一个加入到显示最后一个加入到CardLayout的组的组件件 void next()显示当前组件的下一个组件,如当前显示当前组件的下一个组件,如当前是最后一个,

20、则下一个为第一个是最后一个,则下一个为第一个 void previous()显示当前组件的前一个组件,如显示当前组件的前一个组件,如当前是第一个,则前一个为最后一个当前是第一个,则前一个为最后一个22CardLayout布局管理器布局管理器与幻灯片播放与幻灯片播放 【例例5】编写编写CardLayout布局程序,在窗框中部放布局程序,在窗框中部放置一个卡片布局面板(卡片盒),内放置一个卡片布局面板(卡片盒),内放3张卡片面张卡片面板,每张卡片设背景色,并放一个标签。窗框下部板,每张卡片设背景色,并放一个标签。窗框下部安放一个面板,上面放安放一个面板,上面放4个按钮:个按钮:“上翻上翻”、“下下

21、翻翻”、“自动播放自动播放”和和“暂停暂停”。 程序代码:程序代码:Example4.java23不使用布局管理器不使用布局管理器 5、null布局管理器布局管理器 null布局管理器将主动权交给用户,由用户使用坐标系布局管理器将主动权交给用户,由用户使用坐标系统来放置每个组件,即调用组件的统来放置每个组件,即调用组件的setBounds()方法来设方法来设置其放置位置和大小。置其放置位置和大小。1调用容器的调用容器的setLayout(null)将布局管理器将布局管理器设置为空设置为空 2调用组件的调用组件的setBounds()方法设置组件方法设置组件的位置和大小的位置和大小 24null

22、布局管理器布局管理器 setBounds()方法的格式方法的格式: setBounds(int x,int y,int width,int height) 前两个前两个int型参数设置组件的位置,后两个型参数设置组件的位置,后两个int型参数设置组件的宽度和高度型参数设置组件的宽度和高度 25null布局管理器布局管理器 【例例6】编写手工布局程序,把窗框布局设为空,编写手工布局程序,把窗框布局设为空,然后在上面放置标签、文本框和按钮。然后在上面放置标签、文本框和按钮。 程序代码:程序代码:Example5.java26练习练习 1.编写程序在图形界面中添加编写程序在图形界面中添加5个按钮组件

23、,界面个按钮组件,界面显示效果如图显示效果如图a所示。所示。 2.编写程序实现图编写程序实现图b所示显示效果,界面中添加所示显示效果,界面中添加6个个按钮组件。按钮组件。图图a图图b27练习练习 参考程序:参考程序:GridLayoutDemo.javaExample1.java28第第5 5讲讲 图形用户界面设计图形用户界面设计主要内容主要内容p AWT和和Swingp 容器容器p 布局布局p Swing组件组件 p Java图形设计图形设计p 事件处理事件处理 29Swing 组件组件 按钮按钮 经常用到的按钮经常用到的按钮 JButton、JToggleButton、JCheckBox、

24、JRadioButton 均是均是AbstractButton的子类或间接子类的子类或间接子类都可以设置文本、设置图标、注册事件监听程序都可以设置文本、设置图标、注册事件监听程序30普通按钮普通按钮JButtonJButton 构造方法构造方法JButton() 创建一个既没有显示文本也没有图标的按创建一个既没有显示文本也没有图标的按钮钮JButton(Icon icon) 创建一个没有显示文本但有图标创建一个没有显示文本但有图标的按钮的按钮 JButton(String text) 创建一个有显示文本但没有图标创建一个有显示文本但没有图标的按钮的按钮 JButton(String text,

25、 Icon icon) 创建一个既有显示文创建一个既有显示文本又有图标的按钮本又有图标的按钮 和和Button不同的是,不同的是,Button组件上只能显示文字,组件上只能显示文字,JButton可以显示文字和可以显示文字和图标图标。31普通按钮普通按钮JButtonJButton 构造显示文本为构造显示文本为“Sample”的按钮的按钮 构造显示文本为构造显示文本为“Sample”、带有钻石形状小图、带有钻石形状小图标的按钮标的按钮 JButton b = new JButton(“Sample” ); JButton b = new JButton(Sample,new ImageIcon

26、(icon.gif); 32切换按钮切换按钮JToggleButton JToggleButton是具有两种状态的按钮,即是具有两种状态的按钮,即选选中状态中状态和和未选中状态未选中状态 JToggleButtonJToggleButton的构造方法主要有:的构造方法主要有: JToggleButton(String text, boolean selected) 创建一个有创建一个有显示文本和指定初始状态但没有图标的切换按钮显示文本和指定初始状态但没有图标的切换按钮 JToggleButton(String text, Icon icon) 创建一个既有显示创建一个既有显示文本又有图标的切换

27、按钮文本又有图标的切换按钮 JToggleButton(String text, Icon icon, boolean selected) 创建一个既有显示文本又有图标和指定初始状态的切换创建一个既有显示文本又有图标和指定初始状态的切换按钮按钮 33JCheckBox, JRadioButton 都是都是JToggleButton的子类的子类 ,构造方法的格式与构造方法的格式与JToggleButton相同,它们也都具有选中和未选中相同,它们也都具有选中和未选中两种状态两种状态 JCheckBox复选框典型的应用是多项选择题复选框典型的应用是多项选择题 isSelected()方法获知按钮的当

28、前状态方法获知按钮的当前状态34JRadioButton单选按钮与单选按钮与ButtonGroup按钮组按钮组 JRadioButton单选按钮组的典型应用是单选按钮组的典型应用是单项选择题单项选择题,例如选,例如选择题有择题有3个答案,只允许选其中之一,需使用个答案,只允许选其中之一,需使用3个单选按钮组个单选按钮组成的按钮组。成的按钮组。 按钮组类按钮组类ButtonGroup常用方法:常用方法:(1)ButtonGroup():构造按钮组对象(构造方法只有:构造按钮组对象(构造方法只有1个)。个)。(2)void add(AbstractButton b):将按钮添加到组。:将按钮添加到

29、组。(3)void clearSelection():清除按钮组中按钮的选中状态。:清除按钮组中按钮的选中状态。(4)int getButtonCount():返回按钮组的按钮个数。:返回按钮组的按钮个数。(5)void remove(AbstractButton b):从按钮组中移除按钮。:从按钮组中移除按钮。35JCheckBox复选框复选框 【例例7】编写使用复选框进行多项兴趣爱好选择的编写使用复选框进行多项兴趣爱好选择的程序。用鼠标单击各个复选框,均会在下面的只读程序。用鼠标单击各个复选框,均会在下面的只读文本框中动态显示选择结果,运行效果如下图:文本框中动态显示选择结果,运行效果如下

30、图: 程序代码:程序代码:Example6.java36JRadioButton单选按钮与单选按钮与ButtonGroup按钮组按钮组 【例例8】编写使用单选按钮组进行志向选择的程序,编写使用单选按钮组进行志向选择的程序,要求每次只选一个志向。程序运行效果如下:要求每次只选一个志向。程序运行效果如下: 参考程序:参考程序:Example66.java37标签(标签(JLabel) 标签(标签(JLabel)对象通常用于显示提示性的文本信)对象通常用于显示提示性的文本信息或图标息或图标 构造方法主要有:构造方法主要有: JLabel(String text) 构造一个显示文本信息的标签构造一个显

31、示文本信息的标签 JLabel(String text, int horizontalAlignment) 构造一个构造一个显示文本信息的标签显示文本信息的标签 JLabel(Icon image, int horizontalAlignment) 构造一个构造一个显 示 图 标 的 标 签 , 水 平 对 齐 方 式 由显 示 图 标 的 标 签 , 水 平 对 齐 方 式 由 i n t 型 参 数型 参 数horizontalAlignment指定指定 JLabel(String text, Icon icon, int horizontalAlignment) 构造一个同时显示文本信息

32、和图标的标签构造一个同时显示文本信息和图标的标签, ,水平对齐方水平对齐方式式horizontalAlignment指定指定38标签(标签(JLabel) 表示水平对齐方式的表示水平对齐方式的int型参数型参数horizontalAlignment 的取值可为的取值可为JLabel.LEFT、 JLabel.RIGHT、 JLabel.CENTER等常量,分别表示左对齐、右对等常量,分别表示左对齐、右对齐和居中。齐和居中。 例例: JLabel label=new JLabel(“hello”, JLabel.LEFT);39组合框(组合框(JComboBox) 组合框(组合框(JComboB

33、ox)是一个下拉式菜单,它有)是一个下拉式菜单,它有两种形式:两种形式:不可编辑的和可编辑的不可编辑的和可编辑的,对不可编辑的,对不可编辑的JComboBox,用户只能在现有的选项列表中进行,用户只能在现有的选项列表中进行选择;而可编辑的选择;而可编辑的JComboBox,用户既可以在现,用户既可以在现有选项中选择,也可以输入新的内容有选项中选择,也可以输入新的内容 40JComboBox构造方法构造方法 JComboBox() 创建一个没有任何可选项的组创建一个没有任何可选项的组合框合框 JComboBox(Object items) 根据根据Object数组数组创建组合框,创建组合框,Ob

34、ject数组的元素即为组合框中的可数组的元素即为组合框中的可选项选项 例:创建一个具有四个可选项的组合框:例:创建一个具有四个可选项的组合框:String itemList = One, Two, Three, Four ;JComboBox jcb = new JComboBox(itemList); 41JComboBox类中方法类中方法 public void addItem(Object anObject) 在末尾位在末尾位置添加新的可选项置添加新的可选项 public void insertItemAt(Object anObject,int index) 在在index指定的位置添

35、加新的可选项指定的位置添加新的可选项anObject public void removeAllItems() 删除所有可选项删除所有可选项 public void removeItem(Object anObject) 删除由删除由anObject指定的可选项指定的可选项 public void removeItemAt(int anIndex) 删除指定删除指定位置(由位置(由anIndex指定)的可选项指定)的可选项 42组合框(组合框(JComboBox)应用)应用 【例例8】编程实现如下界面所示的运行效果。编程实现如下界面所示的运行效果。 程序代码:程序代码:JComboBoxDem

36、o.java43列表框(列表框(JList) 列表(列表(JList)是可供用户进行选择的一系列可选项)是可供用户进行选择的一系列可选项 构造方法构造方法 JList() 构造一个空列表构造一个空列表 JList(Object listData) 构造一个列表,构造一个列表,列表的可选项由对象数组列表的可选项由对象数组listData指定指定 JList(Vector listData) 构造一个列表,构造一个列表,列表的可选项由列表的可选项由Vector型参数型参数listData指定指定44列表框(列表框(JList) 例:根据例:根据String数组构造一个包含四个可选项的数组构造一个包

37、含四个可选项的列表列表 也可通过下面的命令创建:也可通过下面的命令创建:String data = one, two, three, four; JList dataList = new JList(data); Vector listData = new Vector();listData.addElement(one );listData.addElement(two );listData.addElement(three );listData.addElement(four );JList list = new JList(listData); 45列表框(列表框(JList)的应用)的

38、应用 【例例9】编程用编程用列表框(列表框(JList)实现如下界面所示实现如下界面所示的运行效果。的运行效果。 程序代码:程序代码:JListDemo.java46文本组件(文本组件(JTextComponent) 用于显示信息和提供用户输入功能用于显示信息和提供用户输入功能 在在Swing中提供了中提供了文本域文本域(JTextField)、)、口令输入口令输入域(域(JPasswordField)、文本区()、文本区(JTextArea)等)等多个文本组件多个文本组件 ,都有一个共同的基类都有一个共同的基类JTextComponent 。47JTextComponent一些方法一些方法g

39、etSelectedText() 从文本组件中提取被选中的文本内容从文本组件中提取被选中的文本内容getText() 从文本组件中提取所有文本内容从文本组件中提取所有文本内容getText(int offs, int len) 从文本组件中提取指定范围的文从文本组件中提取指定范围的文本内容本内容select(int selectionStart, int selectionEnd) 在文本组件中选在文本组件中选中指定范围的文本内容中指定范围的文本内容selectAll() 在文本组件中选中所有文本内容在文本组件中选中所有文本内容setEditable(boolean b) 设置为可编辑或不可编

40、辑状态设置为可编辑或不可编辑状态setText(String t) 设置文本组件中的文本内容设置文本组件中的文本内容setDocument(Document doc) 设置文本组件的文档设置文本组件的文档copy() 复制选中的文本到剪贴板复制选中的文本到剪贴板cut() 剪切选中的文本剪贴板剪切选中的文本剪贴板paste() 将剪贴板的内容粘贴到当前位置将剪贴板的内容粘贴到当前位置 48文本域文本域 JTextField 文本域是一个单行的文本输入框,可用于输入少量文本域是一个单行的文本输入框,可用于输入少量文本文本 主要构造方法:主要构造方法: JTextField(int columns

41、) 构造一个具有指定列数构造一个具有指定列数的空文本域,的空文本域, JTextField(String text) 构造一个显示指定初始构造一个显示指定初始字符串的文本域字符串的文本域 JTextField(String text, int columns) 构造一个构造一个具有指定列数、并显示指定初始字符串的文本域具有指定列数、并显示指定初始字符串的文本域 例:例:构造一个列数为构造一个列数为35、初始字符串为、初始字符串为“Single Line”的文的文本域本域 JTextField tf = new JTextField(“Single Line” ,35);49文本区文本区 JTe

42、xtArea 文本区是一个多行多列的文本输入框。文本区是一个多行多列的文本输入框。 主要构造方法:主要构造方法: JTextArea() 构造一个空文本区构造一个空文本区JTextArea(String text) 构造一个显示指定初构造一个显示指定初始字符串的文本区始字符串的文本区JTextArea(int rows, int columns) 构造一个具构造一个具有指定行数和列数的空文本区,有指定行数和列数的空文本区, JTextArea(String text, int rows, int columns) 构造一个具有指定行数和列数、并显示指定初始构造一个具有指定行数和列数、并显示指定

43、初始字符串的文本区字符串的文本区50文本区文本区 JTextArea 例:例: JTextArea ta = new JTextArea(“Initial text”, 4, 30) 对文本区进行操作的方法对文本区进行操作的方法append(String str) 将指定文本追加到文本区。将指定文本追加到文本区。insert(String str, int pos) 将指定文本插入到文本区的特定位置。将指定文本插入到文本区的特定位置。replaceRange(String str, int start, int end) 指定文本替换文本区中的部分内容指定文本替换文本区中的部分内容 51JPa

44、sswordField密码框密码框 JPasswordField显示显示特殊符号特殊符号,如,如*,达到保密目的。,达到保密目的。 密码框是文本框的子类,文本框和密码框都属于文本密码框是文本框的子类,文本框和密码框都属于文本组件。组件。 密码框密码框JPasswordField常用方法:常用方法:(1)JPasswordField()(2)JPasswordField(int columns)(3)void setEchoChar(char c):设置密码框回显字符。设置密码框回显字符。(4)char getPassword():获取密码框字符。:获取密码框字符。 出于安全考虑,不要使用已过时

45、的出于安全考虑,不要使用已过时的getText()方法获取方法获取密码框字符。密码框字符。 52JTextField文本框与文本框与JPasswordField密码框密码框 【例例10】编写一个编写一个Java程序,在程序中生成一个框程序,在程序中生成一个框架窗口,不使用窗口的布局管理器,加入组件,制架窗口,不使用窗口的布局管理器,加入组件,制作密码验证窗口。运行效果如下图:作密码验证窗口。运行效果如下图: 程序代码:程序代码:PassWordWin.java53菜单组件菜单组件 SWING包中提供的多种菜单组件包中提供的多种菜单组件 JMenuBar JMenu JMenuItem JChe

46、ckBoxMenuItem JRadioButtonMenuItem JPopupMenu 54菜单栏菜单栏JMenuBarJMenuBar 菜单栏是窗口中的主菜单,用来包容一组菜单菜单栏是窗口中的主菜单,用来包容一组菜单, ,只只有一种构造方法:有一种构造方法:JMenuBar() 。 JFrame、JApplet和和JDialog等类中定义了等类中定义了setJMenuBar(JMenuBar menu)方法,可以把菜单方法,可以把菜单栏放到窗口的上方栏放到窗口的上方 例:例: JFrame frame = new JFrame(“JMenuBar”); JMenuBar mb = new

47、 JMenuBar(); frame.setJMenuBar(mb); 55菜单菜单JMenuJMenu 菜单是最基本的下拉菜单,用来包容一组菜单项或菜单是最基本的下拉菜单,用来包容一组菜单项或子菜单。构造方法如下子菜单。构造方法如下: public Menu(String label) /其中其中 label指定了菜单上的文本。指定了菜单上的文本。 菜单加入菜单栏或者另一个菜单中菜单加入菜单栏或者另一个菜单中 JMenu menu1 = new JMenu( File);JMenu menu2 = new JMenu( Option);JMenu menu3 = new JMenu( Hel

48、p);mb.add(menu1);mb.add(menu2); mb.add(menu3); 56菜单项菜单项JMenuItemJMenuItem 常用的菜单项构造方法常用的菜单项构造方法 JMenuItem(Icon icon) 构造一个只显示图标的菜单构造一个只显示图标的菜单项,图标由项,图标由Icon型参数型参数icon指定指定 JMenuItem(String text) 构造一个只显示文本的菜构造一个只显示文本的菜单项,文本由单项,文本由String型参数型参数text指定指定 JMenuItem(String text, Icon icon) 构造一个同时显构造一个同时显示文本和图

49、标的菜单项,文本由示文本和图标的菜单项,文本由String型参数型参数text指定,指定,图标由图标由Icon型参数型参数icon指定指定 JMenuItem(String text, int mnemonic) 构造一个显构造一个显示文本并且有快捷键的菜单项,文本由示文本并且有快捷键的菜单项,文本由String型参数型参数text指定,快捷键由指定,快捷键由int型参数型参数mnemonic指定指定 JMenu m1 = new JMenu (“File”);JMenuItem mi1 = new JMenuItem( Save, KeyEvent.VK_S );JMenuItem mi2

50、= new JMenuItem (“Load”);JMenuItem mi3 = new JMenuItem (“Quit”);m1.add(mi1);m1.add(mi2);m1.add(mi3); 构造了三个菜单项,分别显示文本“Save”、“Load”和“Quit”,其中第一个菜单项的快捷键为Ctrl+S,三个菜单项均被加入菜单m1中 快捷键也可以在菜单项被创建之后,通过setMnemonic(char mnemonic)方法进行设置 57菜单方法菜单方法 addSeparator ()和和insertSeparator(int index):菜单菜单项间项间加入分隔线加入分隔线 例:例

51、: JMenu m1 = new JMenu (“File”); m1.add(mi1); m1.add(mi2); m1.addSeparator(); m1.add(mi3); 58复选和单选菜单项复选和单选菜单项 这是两种特殊的菜单项,在复选菜单项前面有一这是两种特殊的菜单项,在复选菜单项前面有一个小方框,在单选菜单项前面有一个小圆圈个小方框,在单选菜单项前面有一个小圆圈,可以可以进行选中或不选中的操作,使用方法与复选按钮进行选中或不选中的操作,使用方法与复选按钮和单选按钮类似和单选按钮类似 当菜单项的检验状态发生改变时,会引发当菜单项的检验状态发生改变时,会引发ItemEvent事件事

52、件,使用使用ItemListener中的中的itemStateChanged()对此事件进行响应对此事件进行响应 59构造方法构造方法 复选菜单项构造方法复选菜单项构造方法 单选菜单项构造方法单选菜单项构造方法 boolean型参数指定菜单项的初始状态型参数指定菜单项的初始状态JCheckBoxMenuItem(Icon icon) JCheckBoxMenuItem(String text) JCheckBoxMenuItem(String text, boolean b) JCheckBoxMenuItem(String text, Icon icon) JCheckBoxMenuItem

53、(String text, Icon icon, boolean b) JRadioButtonMenuItem(Icon icon) JRadioButtonMenuItem(Icon icon, boolean selected) JRadioButtonMenuItem(String text) JRadioButtonMenuItem(String text, boolean selected) JRadioButtonMenuItem(String text, Icon icon) JRadioButtonMenuItem(String text, Icon icon, boolea

54、n selected) 60菜单组件菜单组件 编程实现如下图运行结果:编程实现如下图运行结果: 程序代码:程序代码:Example22.java61弹出式菜单弹出式菜单JPopupMenuJPopupMenu 弹出式菜单(弹出式菜单(JPopupMenuJPopupMenu)是一种比较特殊的独立)是一种比较特殊的独立菜单,可以根据需要显示在指定位置。有两种构造菜单,可以根据需要显示在指定位置。有两种构造方法方法 public JPopupMenu()构造一个没有名称的弹出式菜构造一个没有名称的弹出式菜单单 public JPopupMenu(String label)构造一个有指定名构造一个有

55、指定名称的弹出式菜单称的弹出式菜单62弹出式菜单弹出式菜单 构造一个名为构造一个名为“Popup”的弹出式菜单的弹出式菜单 加入菜单或菜单项加入菜单或菜单项 在显示弹出式菜单时,必须调用在显示弹出式菜单时,必须调用show()方法方法 JPopupMenu p = new JPopupMenu (“Popup”) JMenuItem s = new JMenuItem(“Save”);JMenuItem l = new JMenuItem(“Load”);p.add(s);p.add(l); public void show(Component origin, int x, int y)需要有

56、一个组件作参数,该组件的位置将需要有一个组件作参数,该组件的位置将作为显示弹出式菜单的参考原点作为显示弹出式菜单的参考原点 63对话框对话框JDialogJDialog 对话框(对话框(JDialog)是与框架类似的可移动窗口,)是与框架类似的可移动窗口,能够被设置为能够被设置为“模式模式”(model)(model)窗口,即在对话框窗口,即在对话框被关闭前,其他窗口无法接收任何输入信息。被关闭前,其他窗口无法接收任何输入信息。 对话框的构造方法对话框的构造方法 JDialog(Frame owner) 构造一个没有标题的非模式构造一个没有标题的非模式对话框对话框 JDialog(Frame

57、owner, boolean modal) 构造一个没构造一个没有标题的对话框,有标题的对话框,boolean型参数型参数modal指定对话框是否指定对话框是否为模式窗口为模式窗口 JDialog(Frame owner, String title) 构造一个有标题构造一个有标题的非模式对话框,的非模式对话框, JDialog(Frame owner, String title, boolean modal) 构造一个有标题的对话框构造一个有标题的对话框64对话框对话框JDialog 例:例: JDialog dialog = new JDialog(frame, “Dialog”,true)

58、 setVisible(true)方法显示,方法显示,setVisible(false)方法可方法可以将一个对话框隐藏起来以将一个对话框隐藏起来65标准对话框标准对话框JOptionPane SWING中还提供了用于显示标准对话框中还提供了用于显示标准对话框(JOptionPane)的)的JOptionPane类类 定义了多个定义了多个showXxxDialog形式的静态方法形式的静态方法 showConfirmDialog 确认对话框,显示问题,要求确认对话框,显示问题,要求用户进行确认(用户进行确认(yes/no/cancel) showInputDialog 输入对话框,提示用户进行输入

59、输入对话框,提示用户进行输入 showMessageDialog 信息对话框,显示信息,告知信息对话框,显示信息,告知用户发生了什么情况用户发生了什么情况 showOptionDialog 选项对话框,显示选项,要求用选项对话框,显示选项,要求用户进行选择户进行选择 66文件对话框文件对话框JFileChooser 专门用于对文件(或目录)进行浏览和选择的对话专门用于对文件(或目录)进行浏览和选择的对话框,常用的构造方法框,常用的构造方法: : JFileChooser() 根据用户的缺省目录创建文件对话根据用户的缺省目录创建文件对话框框 JFileChooser(File currentDi

60、rectory) 根据根据File型参数型参数currentDirectory指定的目录创建文件对话框指定的目录创建文件对话框 JFileChooser(String currentDirectoryPath) 根据根据String型参数型参数currentDirectoryPath指定的目录创建文件指定的目录创建文件对话框对话框 67文件对话框文件对话框JFileChooser显示显示 showOpenDialog(Component parent)显示一个显示一个“打开打开”文件对话框文件对话框 showSaveDialog(Component parent)显示显示“保存保存”文件对话框

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论