1、IntroductionStrategyIntroductionStrategy123AWT(Abstract Window Toolkit)即抽象)即抽象窗口工具包。抽象窗口工具包为开发者提窗口工具包。抽象窗口工具包为开发者提供建立图形用户界面的工具集。主要功能供建立图形用户界面的工具集。主要功能包括以下几个方面。包括以下几个方面。(1)用户界面组件。用户界面组件。(2)事件处理模型。事件处理模型。(3)图形和图像工具。图形和图像工具。(4)布局管理器。布局管理器。(5)数据传送类。数据传送类。AWT主要涉及主要涉及java.awt包,这个包也是包,这个包也是java众多众多包中最大的一个。
2、包中最大的一个。java.awt包中提供了图形用包中提供了图形用户界面设计所使用的类和接口。提供的工具类户界面设计所使用的类和接口。提供的工具类主要包括下述主要包括下述3种。种。(1)组件即组件即Component:在图形界面中,用户经常:在图形界面中,用户经常看到的一个个按钮、标签、菜单等称为组件。看到的一个个按钮、标签、菜单等称为组件。(2)容器即容器即Container:所有的:所有的AWT组件都放在容组件都放在容器中,并可以设置其位置、大小等。器中,并可以设置其位置、大小等。(3)布局管理器即布局管理器即LayoutManager:可以使容器中:可以使容器中的组件按照指定的位置进行摆放
3、。的组件按照指定的位置进行摆放。追溯追溯Swing产生的根源就不可避免地提到产生的根源就不可避免地提到AWT。在。在Java刚诞生的时候,刚诞生的时候,AWT是是Java唯唯一的用于开发图形界面的基本编程库。但随着一的用于开发图形界面的基本编程库。但随着Java的广泛应用,的广泛应用,AWT逐渐暴露了自身的不足逐渐暴露了自身的不足,比如缺少剪贴板、打印支持、键盘导航等特,比如缺少剪贴板、打印支持、键盘导航等特性。而基于本地对等组件的同位体体系结构更性。而基于本地对等组件的同位体体系结构更是容易在不同操作系统下出现问题。是容易在不同操作系统下出现问题。AWT逐渐逐渐不能满足图形界面开发的需要,而
4、这正是促进不能满足图形界面开发的需要,而这正是促进Swing产生的根本原因。于是产生的根本原因。于是1996年年Sun同同Netscape合作创建合作创建Swing库。库。Swing的组件几乎都是轻量级组件。与的组件几乎都是轻量级组件。与AWT组组件不同的是:这些组件没有本地的对等组件是件不同的是:这些组件没有本地的对等组件是由纯由纯Java实现的,所以它们也不依赖于操作系实现的,所以它们也不依赖于操作系统。与统。与AWT的重量级组件相比,的重量级组件相比,Swing组件被组件被称为轻量级组件。重量级组件在本地的不透明称为轻量级组件。重量级组件在本地的不透明窗体中绘制,而轻量级组件在重量级组件
5、的窗窗体中绘制,而轻量级组件在重量级组件的窗口中绘制。由于抛弃了基于本地对等组件的同口中绘制。由于抛弃了基于本地对等组件的同位体体系结构,位体体系结构,Swing不但在不同的平台上表不但在不同的平台上表现一致,而且提供了本地组件不支持的特性。现一致,而且提供了本地组件不支持的特性。然而然而Swing的出现并不代表的出现并不代表AWT的设计是失的设计是失败的。需要明确的是败的。需要明确的是AWT是是Swing的基础,的基础,而而AWT最初的设计也只是定位于小应用程最初的设计也只是定位于小应用程序的简单用户界面。序的简单用户界面。使用使用Swing开发图形界面,所有的组件、容开发图形界面,所有的组
6、件、容器和布局管理器都在器和布局管理器都在javax.swing包中。包中。组件不能独立地显示出来,必须将组件组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。容放在一定的容器中才可以显示出来。容器不仅可以容纳组件也可以容纳其他容器不仅可以容纳组件也可以容纳其他容器。实际上容器是一种特殊的组件,具器。实际上容器是一种特殊的组件,具有组件的所有性质,但是它的主要功能有组件的所有性质,但是它的主要功能是容纳其他组件和容器。是容纳其他组件和容器。java.awt.Container类是类是java.awt.Component的子类,一个容器的子类,一个容器可以容纳多个组件,并使它们成
7、为一个可以容纳多个组件,并使它们成为一个整体。所有的容器都可以通过整体。所有的容器都可以通过add()方法方法向容器中添加组件。有向容器中添加组件。有3种类型的容器:种类型的容器:Window、Panel、ScrollPane,常用的有,常用的有Panel、Frame等。等。在开发在开发Java应用程序时,通常利用应用程序时,通常利用JFrame类来创建窗体。利用类来创建窗体。利用JFrame类创类创建的窗体分别包含一个标题、最小化按建的窗体分别包含一个标题、最小化按钮、最大化按钮和关闭按钮。钮、最大化按钮和关闭按钮。JFrame类类提供了一系列用来设置窗体的方法,常提供了一系列用来设置窗体的
8、方法,常用方法如表用方法如表12-1所示。所示。表表12-1 JFrame类的常用方法类的常用方法序号方法描述1public JFrame()throws HeadlessException构造一个不可见的窗体对象2public JFrame(String title)throws HeadlessException构造一个带标题的窗体对象3public void setSize(int width,int height)设置窗体大小4public void setSize(Dimension d)通过Dimension设置窗体大小5public void setBackground(Colo
9、r c)设置窗体的背景色6public void setLocation(int x,int y)设置组件类的显示位置7public void setBounds(int x,int y,int width,int height)设置组件类的显示位置8public void setLocation(Point p)通过Point设置组件显示位置9public void setVisible(boolean b)显示或隐藏组件10public Component add(Component comp)向容器中增加组件11public void setLayout(LayoutManager ma
10、nager)设置布局管理器,null不设置12public Container getContentPane()返回此窗体的容器对象 步骤步骤1:建立文件:建立文件JFrameDemo12_1.java,完成以下程,完成以下程序:序:import java.awt.Color;import javax.swing.JFrame;public class JFrameDemo public static void main(String args)JFrame f=new JFrame(第一个第一个Swing窗体窗体);/实例化窗体对象实例化窗体对象 f.setSize(230,160);/设置
11、窗体大小设置窗体大小 f.setBackground(Color.WHITE);/设置窗体的设置窗体的背景颜色背景颜色 f.setLocation(300,200);/设置窗体的显示位置设置窗体的显示位置 f.setVisible(true);/让组件显示让组件显示 /设置关闭按钮的动作为关闭窗体设置关闭按钮的动作为关闭窗体 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);步骤步骤2:运行程序,观察结果。程序运行:运行程序,观察结果。程序运行结果如图结果如图12-1:图图12-1 文件文件JFrameDemo12_1.java运行结果运行结果
12、在利用在利用JFrame类创建窗体时,必须类创建窗体时,必须在最后设置为可见,在默认情况下在最后设置为可见,在默认情况下窗体不可见。为了让窗体的关闭按窗体不可见。为了让窗体的关闭按钮可用,必须设置关闭按钮可用。钮可用,必须设置关闭按钮可用。否则需要使用否则需要使用Ctrl+C组合键退出程组合键退出程序序123 JLabel组件表示的是一个标签,本身组件表示的是一个标签,本身是用来显示信息的,一般情况下是不是用来显示信息的,一般情况下是不能更改其显示内容的。创建完的能更改其显示内容的。创建完的JLabel对象可以通过容器类对象可以通过容器类Container类中的类中的add()方法加入到容器中
13、,方法加入到容器中,JLabel类中的常用方法和常量如表类中的常用方法和常量如表12-2所示。所示。表表12-2 JLabel类的常用方法和常量类的常用方法和常量序号方法及常量类型描述1public static final int LEFT 常量标签文本左对齐2public static final int RIGHT常量标签文本右对齐3public static final int CENTER常量标签文本居中对齐4public JLabel()构造创建一个JLabel对象5public JLabel(String text)构造创建一个指定文本内容的JLabel对象,默认左对齐6publ
14、ic JLabel(String text,int Alignment)构造创建一个指定文本内容和对齐方式的JLabel对象7public JLabel(String text,Icon icon,int horizontalAlignment)构造创建具有指定文本、图像和水平对齐方式的JLabel对象8public void setText(String text)普通设置标签的文本9public String getText()普通取得标签的文本10public void setIcon(Icon icon)普通设置指定的图像步骤步骤1:建立文件:建立文件JLabelDemo12_2.ja
15、va,完成以下程序:完成以下程序:import java.awt.Color;import java.awt.Dimension;import java.awt.Point;import javax.swing.JFrame;import javax.swing.JLabel;public class JLabelDemo public static void main(String args)JFrame f=new JFrame(JLabel示例窗体示例窗体);/实例化窗体对象实例化窗体对象 /实例化对象,居中对齐实例化对象,居中对齐JLabel label=new JLabel(太原大太
16、原大,JLabel.CENTER);f.add(label);/向容器中加入组件向容器中加入组件 Dimension dim=new Dimension();/实例化对实例化对象象 dim.setSize(230,160);/设置大小设置大小 f.setSize(dim);/设置组件大小设置组件大小f.setBackground(Color.WHITE);/设置窗体的背设置窗体的背景颜色景颜色 Point point=new Point(300,200);/设置显示设置显示的坐标点的坐标点 f.setLocation(point);/设置窗体的显示位置设置窗体的显示位置 f.setVisibl
17、e(true);/让组件显示让组件显示 /设置关闭按钮关闭窗体设置关闭按钮关闭窗体f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);步骤步骤2:运行程序,观察结果。程序运行结:运行程序,观察结果。程序运行结果如图果如图12-2:图图12-2 文件文件JLabelDemo12_2.java运行结果运行结果 上例的标签内容只是使用了默认的字体及上例的标签内容只是使用了默认的字体及颜色显示,如果现在要更改使用的字体颜色显示,如果现在要更改使用的字体,则可以直接使用,则可以直接使用java.awt.Font类来表类来表示字体。示字体。常用方法如下:常用方
18、法如下:protected Font(Font font)/设置字体设置字体public Font(String name,int style,int size)12.3.3 12.3.3 操作任务操作任务22观察示例,根据指定名称观察示例,根据指定名称、样式和磅值大小,创建一个新、样式和磅值大小,创建一个新 FontFont 步骤步骤1:建立文件:建立文件JLabelDemo12_3.java,完成以,完成以下程序:下程序:import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.
19、Label;import java.awt.Point;import javax.swing.JFrame;import javax.swing.JLabel;public class JLabelDemo public static void main(String args)JFrame f=new JFrame(JLabel示例窗体示例窗体);/实例化窗体对象实例化窗体对象 JLabel lab=new JLabel(How are you!);/实实例化对象例化对象 lab.setBounds(0,0,100,100);/设置标签的显示设置标签的显示位置和大小位置和大小 /设置文本的字
20、体和大小设置文本的字体和大小 lab.setFont(new Font(Serief,Font.BOLD+Font.ITALIC,23);lab.setHorizontalAlignment(Label.LEFT);/设置设置水平对齐方式水平对齐方式 lab.setForeground(Color.RED);/设置标签的设置标签的文字颜色文字颜色 f.add(lab);/向容器中加入组件向容器中加入组件 Dimension dim=new Dimension();/实例化对实例化对象象 dim.setSize(230,160);/设置大小设置大小 f.setSize(dim);/设置组件大小设
21、置组件大小 f.setBackground(Color.WHITE);/设置窗体的设置窗体的背景颜色背景颜色 Point point=new Point(300,200);/设置显示的设置显示的坐标点坐标点 f.setLocation(point);/设置窗体的显示位置设置窗体的显示位置 f.setVisible(true);/让组件显示让组件显示 /设置关闭按钮关闭窗体设置关闭按钮关闭窗体 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);步骤步骤2:运行程序,观察结果。程序运行结果如:运行程序,观察结果。程序运行结果如图图12-3:图图12-
22、3 文件文件JLabelDemo12_3.java运行结果运行结果 JButton组件表示一个普通的按钮,使用组件表示一个普通的按钮,使用此类可以直接在窗体中增加一个按钮。此类可以直接在窗体中增加一个按钮。JButton类常用的方法如表类常用的方法如表12-3所示。所示。表表12-3 JButton类常用方法类常用方法序号方法描述1public JButton()构造一个JButton对象2public JButton(String text)创建一个带文本的按钮3public JButton(Icon icon)创建一个带图标的按钮4public JButton(String text,Ic
23、on icon)创建带初始文本和图标的按钮5public void setMnemonic(int mnemonic)设置按钮的快捷键6public void setText(String text)设置JButton的显示内容 JButton组件只是在按下和释放两个状态组件只是在按下和释放两个状态之间进行切换,可以通过捕获按下并释之间进行切换,可以通过捕获按下并释放的动作执行一些操作,从而完成和用放的动作执行一些操作,从而完成和用户的交互。户的交互。步骤步骤1:建立文件:建立文件JButtonDemo12_4.java,完成,完成以下程序:以下程序:import javax.swing.Ic
24、on;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;public class JButtonDemopublic static void main(String args)JFrame f=new JFrame(“JButton示例窗示例窗体体”);/实例化窗体对象实例化窗体对象 f.setLayout(null);/不使用布局管理器不使用布局管理器 JButton b1=new JButton();/定义按钮定义按钮对象对象 b1.setText(按我按我);/设置按钮的显示
25、文设置按钮的显示文本本 b1.setBounds(0,30,100,30);/设置按钮的位置及设置按钮的位置及大小大小 Icon icon=new ImageIcon(China.png);/实实例化例化Icon对象对象 JButton b2=new JButton(icon);/定义按钮对定义按钮对象象 b2.setBounds(110,10,130,100);/设置按钮的设置按钮的位置及大小位置及大小 f.add(b1);/向容器中加入组件向容器中加入组件 f.add(b2);/向容器中加入组件向容器中加入组件 f.setSize(260,160);/设置大小设置大小 f.setLocat
26、ion(300,200);/设置窗体的显设置窗体的显示位置示位置 f.setVisible(true);/让组件显示让组件显示 /设置关闭按钮关闭窗体设置关闭按钮关闭窗体f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);步骤步骤2:运行程序,观察结果。程序运行结:运行程序,观察结果。程序运行结果如图果如图12-4:图图12-4 文件文件JButtonDemo12_4.java运行结果运行结果 从结果可以发现,为一个按钮设置一张从结果可以发现,为一个按钮设置一张显示图片的方法与显示图片的方法与JLabel类似。类似。JPanel容器是一种常用的容器
27、,可以使用容器是一种常用的容器,可以使用JPanel完成各种复杂的界面显示。在完成各种复杂的界面显示。在JPanel中中可以加入任意的组件,之后直接将可以加入任意的组件,之后直接将JPanel容器容器加入到加入到JFrame容器中即可显示。容器中即可显示。下面的示例演示了下面的示例演示了JPanel容器的基本使用。容器的基本使用。import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class JPanelDemo publi
28、c static void main(String args)JFrame f=new JFrame(JPanel示例示例);/实例化窗体对象实例化窗体对象 JPanel p=new JPanel();/实例化实例化JPanel对象对象 p.add(new JLabel(标签标签-A);p.add(new JLabel(标签标签-B);p.add(new JLabel(标签标签-C);p.add(new JButton(按钮按钮-X);p.add(new JButton(按钮按钮-Y);p.add(new JButton(按钮按钮-Z);f.pack();/根据组件自动调整窗体大小根据组件自动
29、调整窗体大小 f.setSize(130,100);/设置大小设置大小 f.setLocation(300,200);/设置窗体的显设置窗体的显示位置示位置 f.setVisible(true);/让组件显示让组件显示 /设置关闭按钮关闭窗体设置关闭按钮关闭窗体 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);可以发现,所有的组件采用顺序的形式可以发现,所有的组件采用顺序的形式加入到加入到JPanel中,最后再将中,最后再将JPanel加入加入到到JFrame中。中。JPanel结合布局管理器可结合布局管理器可以更加方便地管理组件。以更加方便地
30、管理组件。每个容器都有自己的布局管理器,用来对容器每个容器都有自己的布局管理器,用来对容器内的组件进行定位、设置大小和排列顺序等。内的组件进行定位、设置大小和排列顺序等。使用布局管理器是为了使生成的图形用户界面使用布局管理器是为了使生成的图形用户界面具有良好的平台无关性。所以建议使用布局管具有良好的平台无关性。所以建议使用布局管理器来管理容器内组件的布局和大小。不同的理器来管理容器内组件的布局和大小。不同的布局管理器使用不同算法和策略,容器可以通布局管理器使用不同算法和策略,容器可以通过选择不同的布局管理器来决定布局。布局管过选择不同的布局管理器来决定布局。布局管理器主要包括:理器主要包括:F
31、lowLayout、BorderLayout、GridLayout、CardLayout。而前面使用的。而前面使用的setBound(int x,int y,int width,int height)是通过是通过设置绝对坐标的方式完成的,称为绝对定位。设置绝对坐标的方式完成的,称为绝对定位。布局管理器是实现图形用户界面平台无关性的布局管理器是实现图形用户界面平台无关性的关键。关键。FlowLayout属于流式布局管理器,它的属于流式布局管理器,它的布局方式是首先在一行上排列组件,当布局方式是首先在一行上排列组件,当该行没有足够的空间时,则回行显示。该行没有足够的空间时,则回行显示。步骤步骤1:
32、建立文件:建立文件FlowLayoutDemo12_6.java,完成程序:,完成程序:import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.JFrame;public class FlowLayoutDemo public static void main(String args)JFrame f=new JFrame(FlowLayout示例示例);/实例化窗体对象实例化窗体对象 /设置窗体的布局管理器为设置窗体的布局管理器为FlowLayout,所有,所有组件居中对齐,水平和垂直间距为组件居中对齐
33、,水平和垂直间距为3 f.setLayout(new FlowLayout(FlowLayout.CENTER,3,3);JButton b=null;for(int i=0;i 8;i+)b=new JButton(按钮按钮-+i);f.add(b);f.setSize(230,130);/设置大小设置大小 f.setLocation(300,200);/设置窗体的显示位置设置窗体的显示位置 f.setVisible(true);/让组件显示让组件显示 /设置关闭按钮关闭窗体设置关闭按钮关闭窗体 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
34、;步骤步骤2:运行程序,观察结果。程序运行结:运行程序,观察结果。程序运行结果如图果如图12-5:图图12-5 文件文件FlowLayoutDemo12_6.java运行结果运行结果步骤步骤3:从程序运行结果中可以发现,所有:从程序运行结果中可以发现,所有的组件按照顺序依次向下排列,每个组的组件按照顺序依次向下排列,每个组件之间的间距是件之间的间距是3,居中对齐。,居中对齐。BorderLayout将一个窗体的版面划分成东、西将一个窗体的版面划分成东、西、南、北、中、南、北、中5个区域,可以直接将需要的组个区域,可以直接将需要的组件放到这件放到这5个区域中,个区域中,BorderLayout是
35、是JFrame窗体的默认布局管理器,如图窗体的默认布局管理器,如图12-6所示。所示。图图12-6 BorderLayout布局方式布局方式 如果组件容器采用了边界布局管理如果组件容器采用了边界布局管理器,在将组件添加到容器时,需要器,在将组件添加到容器时,需要设置组件的显示位置,通过方法设置组件的显示位置,通过方法add()添加。添加。步骤步骤1:建立文件:建立文件BorderLayoutDemo12_7.java,完成以下程序:完成以下程序:import java.awt.BorderLayout;import javax.swing.JButton;import javax.swing.
36、JFrame;public class BorderLayoutDemo public static void main(String args)JFrame f=new JFrame(BorderLayout示例示例);/实例化窗体对象实例化窗体对象 /设置窗体的布局管理器为设置窗体的布局管理器为BorderLayout,所,所有组件水平和垂直间距为有组件水平和垂直间距为3 f.setLayout(new BorderLayout(3,3);f.add(new JButton(东东(EAST),BorderLayout.EAST);f.add(new JButton(西西(WEST),Bor
37、derLayout.WEST);f.add(new JButton(南南(SOUTH),BorderLayout.SOUTH);f.add(new JButton(北北(NORTH),BorderLayout.NORTH);f.add(new JButton(中中(CENTER),BorderLayout.CENTER);f.pack();/根据组件自动调整窗体大小根据组件自动调整窗体大小 f.setSize(300,160);/设置大小设置大小 f.setLocation(300,200);/设置窗体的显示位置设置窗体的显示位置 f.setVisible(true);/让组件显示让组件显示
38、/设置关闭按钮关闭窗体设置关闭按钮关闭窗体 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);步骤步骤2:运行程序,观察结果。程序运行:运行程序,观察结果。程序运行结果如图结果如图12-7:图图12-7 文件文件BorderLayoutDemo12_7.java运行结果运行结果 GridLayout称为网格布局管理器,它的称为网格布局管理器,它的布局方式是将容器区域划分为一个矩形布局方式是将容器区域划分为一个矩形网格(区域),其组件按行和列排列,网格(区域),其组件按行和列排列,每个组件占一格。它是以表格的形式进每个组件占一格。它是以表格的形式进
39、行管理的,在使用此布局管理器时必须行管理的,在使用此布局管理器时必须设置显示的行数和列数。设置显示的行数和列数。步骤步骤1:建立文件:建立文件GridLayoutDemo12_8.java,完成以下程,完成以下程序:序:import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;public class GridLayoutDemo public static void main(String args)JFrame f=new JFrame(计算器面板示例计算器面板示例);/实例化窗体对象实例
40、化窗体对象 /设置窗体的布局管理器为设置窗体的布局管理器为GridLayout,按,按4X4进行排列,进行排列,/所有组件水平和垂直间距为所有组件水平和垂直间距为3 f.setLayout(new GridLayout(4,4,3,3);String names=1,2,3,+,4,5,6,-,7,8,9,*,.,0,=,/;JButton b=new JButton44;for(int row=0;row names.length;row+)for(int col=0;col names.length;col+)/创建按钮对象创建按钮对象browcol=new JButton(namesro
41、wcol);f.add(browcol);f.pack();/根据组件自动调整窗体大小根据组件自动调整窗体大小 f.setSize(300,160);/设置大小设置大小 f.setLocation(300,200);/设置窗体的显示位置设置窗体的显示位置 f.setVisible(true);/让组件显示让组件显示 /设置关闭按钮关闭窗体设置关闭按钮关闭窗体 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);步骤步骤2:运行程序,观察结果。程序运行:运行程序,观察结果。程序运行结果如图结果如图12-8:图图12-8 文件文件GridLayoutD
42、emo12_8.java运行结果运行结果 CardLayout是将一组组件彼此重是将一组组件彼此重叠地进行布局,就像一张张卡片叠地进行布局,就像一张张卡片一样,这样每次只会展现一个界一样,这样每次只会展现一个界面。所以面。所以CardLayout布局管理器布局管理器需要有用于翻转的方法。需要有用于翻转的方法。步骤步骤1:建立文件:建立文件CardLayoutDemo12_9.java,完成以下程序:完成以下程序:import java.awt.CardLayout;import java.awt.Container;import javax.swing.JFrame;import javax.
43、swing.JLabel;public class CardLayoutDemo public static void main(String args)JFrame f=new JFrame(CardLayout示例示例);/实例化窗体对象实例化窗体对象 Container c=f.getContentPane();/取得窗体容取得窗体容器器 CardLayout card=new CardLayout();/定义定义布局管理器布局管理器 f.setLayout(card);/设置布局管理器设置布局管理器 c.add(new JLabel(First,JLabel.CENTER),first
44、);c.add(new JLabel(Second,JLabel.CENTER),second);c.add(new JLabel(Third,JLabel.CENTER),third);f.pack();/根据组件自动调整窗体大小根据组件自动调整窗体大小 f.setSize(130,100);/设置大小设置大小 f.setLocation(300,200);/设置窗体的显设置窗体的显示位置示位置 f.setVisible(true);/让组件显示让组件显示 card.show(c,second);/显示第显示第2张卡片张卡片 for(int i=0;i 3;i+)try Thread.sle
45、ep(3000);/加入显示延迟加入显示延迟 catch(InterruptedException e)e.getStackTrace();card.next(c);/从容器中取出组件从容器中取出组件 /设置关闭按钮关闭窗体设置关闭按钮关闭窗体 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);步骤步骤2:运行程序,观察结果。程序运行结果如图:运行程序,观察结果。程序运行结果如图12-9:图图12-9 文件文件CardLayoutDemo12_9.java运行结果运行结果在内容显示时首先会显示第在内容显示时首先会显示第2张卡片,之后循环显示每一张
46、卡片,之后循环显示每一张卡片。张卡片。在在Swing中提供了中提供了3类文本输入组件。类文本输入组件。(1)单行文本框:)单行文本框:JTextField。(2)密码文本框:)密码文本框:JPasswordField。(3)多行文本框:)多行文本框:JTextArea。在开发中在开发中JTextComponent组件的常用方法组件的常用方法如表如表12-4所示。所示。表表12-4 JTextComponent常用方法常用方法序号方法描述1public String getText()返回文本框的所有内容2public String getSelectedText()返回文本框中选定的内容3pu
47、blic int getSelectionStart()返回选定文本的起始位置4public int getSelectionEnd()返回选定文本的结束位置5public void selectAll()选择此文本框的所有内容6public void setText(String t)设置此文本框的内容7public void select(int selectionStart,int selectionEnd)将指定范围内的内容选定8public void setEditable(boolean b)设置此文本框是否可编辑 JTextField组件实现一个文本框,用来组件实现一个文本框,用
48、来接收用户输入的单行文本信息。可以接收用户输入的单行文本信息。可以设置默认文本、设置文本长度、设置设置默认文本、设置文本长度、设置文本的字体和格式等。常用的方法如文本的字体和格式等。常用的方法如表表12-5所示。所示。表表12-5 JTextField常用方法常用方法 序号方法描述1public JTextField()构造默认的文本框2public JTextField(String text)构造指定文本内容长度文本框3public JTextField(int columns)设置文本框内容的长度4public JTextField(String text,int columns)构造指
49、定文本内容并设置长度5public void setFont(Font f)设置文本框文本的字体6public void setHorizontalAlignment(int alignment)设置文本的水平对齐方式步骤步骤1:建立文件:建立文件JTextFieldDemo12_10.java,完,完成以下程序:成以下程序:import java.awt.Font;import java.awt.GridLayout;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;public
50、 class JTextFieldDemo public static void main(String args)JFrame f=new JFrame(JTextField示例示例);/实例化窗体实例化窗体对象对象 JLabel lb1=new JLabel(“姓名:姓名:”);/创建标签对象创建标签对象 /定义文本框,指定内容和长度定义文本框,指定内容和长度 JTextField text1=new JTextField(陈占伟陈占伟,30);text1.setFont(new Font(,Font.BOLD,12);/设置文本设置文本的字体的字体 JLabel lb2=new JLab