Swing组件(精品).ppt
《Swing组件(精品).ppt》由会员分享,可在线阅读,更多相关《Swing组件(精品).ppt(68页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第六章第六章 SwingSwing用户界面组件用户界面组件6.1 6.1 布局管理器布局管理器一一.组件设置过程组件设置过程定义组件定义组件 例:例:JButtonJButton redButtonredButton=new=new JButton(“redJButton(“red”);”);添加到面板中添加到面板中 例:例:add(redButtonadd(redButton););为组件设置监听器为组件设置监听器 例:例:redButton.addActionListener(listenerredButton.addActionListener(listener););组件多时怎么办?组
2、件多时怎么办?二二.布局管理器布局管理器JavaJava采用布局管理器对放置在容器内的组件采用布局管理器对放置在容器内的组件实行动态管理。实行动态管理。JavaJava支持四种布局支持四种布局FlowLayoutFlowLayout 流布局流布局BorderLayoutBorderLayout 边界布局边界布局GridLayoutGridLayout 网格布局网格布局CardLayoutCardLayout 卡片布局卡片布局1.1.FlowLayoutFlowLayout组件按照加入的先后顺序从左向右排列,一组件按照加入的先后顺序从左向右排列,一行排满之后就转到下一行继续从左向右排列,行排满之
3、后就转到下一行继续从左向右排列,每一行中的组件都居中排列。每一行中的组件都居中排列。FlowLayoutFlowLayout是是PanelPanel和和AppletApplet型容器的默认型容器的默认使用布局。使用布局。自左向右、居中排列构造新布局构造新布局FlowLayoutFlowLayout()()FlowLayout(intFlowLayout(int align)align)根据指定的对齐方式来构造一个新根据指定的对齐方式来构造一个新FlowLayoutFlowLayout参数:参数:FlowLayout.LEFTFlowLayout.LEFT左对齐左对齐 FlowLayout.RI
4、GHTFlowLayout.RIGHT 右对齐右对齐 FlowLayout.CENTERFlowLayout.CENTER 居中居中FlowLayout(intFlowLayout(int align align,intint hgaphgap ,vgapvgap)根据指定对齐方式来构造新的根据指定对齐方式来构造新的FlowLayoutFlowLayout align:align:对齐方式对齐方式 hgaphgap:水平距离水平距离 vgapvgap:垂直距离垂直距离设置新布局设置新布局setLayout(LayoutManagersetLayout(LayoutManager m)m)为容器
5、设置布局管理器为容器设置布局管理器 例:例:FlowLayoutFlowLayout m=new m=new FlowLayoutFlowLayout();();setLayout(msetLayout(m););或:或:setLayout(newsetLayout(new FlowLayoutFlowLayout();();FlowLayoutFlowLayout布局管理器并不强行设定组件的大小,布局管理器并不强行设定组件的大小,而是允许组件拥有它们自己所希望的尺寸。而是允许组件拥有它们自己所希望的尺寸。FlowLayoutFlowLayout示例示例1.import java.awt.*;
6、2.import javax.swing.*;3.class MyFlow4.5.private JFrame f;6.private Button button1,button2,button3;7.public static void main(String args)8.MyFlow mflow=new MyFlow();9.mflow.go();10.11.public void go()12.f=new JFrame(Flow Layout);13.f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);14.f.setLayout(n
7、ew FlowLayout();15.button1=new Button(Ok);16.button2=new Button(Open);17.button3=new Button(Close);18.f.add(button1);19.f.add(button2);20.f.add(button3);21.f.setSize(300,200);22.f.setVisible(true);23.24.2.2.BorderLayoutBorderLayout它把容器的空间分为它把容器的空间分为:东、西、南、北、中。东、西、南、北、中。在在BorderLayoutBorderLayout类中用类
8、中用EASTEAST、WESTWEST、SOUTHSOUTH、NORTHNORTH、CENTERCENTER常量来表示上常量来表示上述划分,以决定组件的安放位置。述划分,以决定组件的安放位置。BorderLayoutBorderLayout是是DialogDialog类和类和FrameFrame类的默认类的默认布局管理器。布局管理器。BorderLayout.NORTH BorderLayout.SOURTHBorderLayout.CENTERBorderLayout.WESTBorderLayout.EASTBorderLayoutBorderLayout布局管理器有两种构造方法:布局管理
9、器有两种构造方法:lBorderLayoutBorderLayout()()构造一个各部分间距为构造一个各部分间距为0 0的的BorderLayoutBorderLayout实例。实例。lBorderLayout(intBorderLayout(int,intint)构造一个各部分具有构造一个各部分具有指定间距的指定间距的BorderLayoutBorderLayout实例。实例。在在BorderLayoutBorderLayout 布局管理器的管理下,组件布局管理器的管理下,组件必须通过必须通过add()add()方法加入到容器的五个命名区方法加入到容器的五个命名区域之一。域之一。在容器的每
10、个区域,只能加入一个组件。可在容器的每个区域,只能加入一个组件。可以使用内部容器在以使用内部容器在BorderLayoutBorderLayout的一个区域的一个区域内间接放入多个组件。内间接放入多个组件。例:下面为将两个按钮放在容器上部和下例:下面为将两个按钮放在容器上部和下部的例子:部的例子:JButtonJButton button1,button2;button1,button2;setLayout(newsetLayout(new BorderLayoutBorderLayout();();button1=new button1=new JButtonJButton(“(“北北”);
11、);button2=new button2=new JButtonJButton(“(“南南”););add(button1,BorderLayout.NORTH);add(button1,BorderLayout.NORTH);add(button2,BorderLayout.SOUTH);add(button2,BorderLayout.SOUTH);符号表示符号表示 BorderLayoutBorderLayout常量被定义为字符串常量被定义为字符串 例例:BorderLayout.SOUTHBorderLayout.SOUTH被定义为字符被定义为字符串:串:SouthSouth。上例应
12、用时可写为:。上例应用时可写为:add(button1,add(button1,“North”);North”);add(button2,add(button2,“South”);South”);BorderLayoutBorderLayout示例示例1.import java.awt.*;2.import javax.swing.*;1.class MyBorder2.3.private JFrame f;4.private Button be,bw,bn,bs,bc;5.public static void main(String args)6.7.MyBorder myborder=ne
13、w MyBorder();8.myborder.go();9.10.void go()11.12.f=new JFrame(Border Layout);13.f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);14.be=new Button(East);15.bs=new Button(South);16.bw=new Button(West);17.bn=new Button(North);18.bc=new Button(Center);19.f.setLayout(new BorderLayout(20,50);20.f.add(b
14、e,BorderLayout.EAST);/f.add(be,East);21.f.add(bw,BorderLayout.WEST);/f.add(bw,West);22.f.add(bs,BorderLayout.SOUTH);/f.add(bs,South);23.f.add(bn,BorderLayout.NORTH);/f.add(bn,North);24.f.add(bc,BorderLayout.CENTER);/f.add(bc,Center);25.JTextField jtext=new JTextField(20);26.f.add(jtext);27.f.setSize
15、(300,300);28.f.setVisible(true);29.30.3.3.GridLayoutGridLayoutGridLayoutGridLayout是一种网格式的布局管理器,它是一种网格式的布局管理器,它将容器空间划分成若干行乘若干列的网格,将容器空间划分成若干行乘若干列的网格,组件依次放入其中,每个组件占据一格。组件依次放入其中,每个组件占据一格。可用方法可用方法setLayoutsetLayout来设置网格布局。来设置网格布局。GridLayoutGridLayout三种构造方法:三种构造方法:lpublic public GridLayoutGridLayout()()l
16、public public GridLayout(intGridLayout(int rows,rows,intint cols)cols)lpublic public GridLayout(intGridLayout(int rows,rows,intint cols,cols,intint hgaphgap,intint vgapvgap)第一种不带参数的构造方法创建一个只有一行的第一种不带参数的构造方法创建一个只有一行的网格,网格的列数根据实际需要而定。网格,网格的列数根据实际需要而定。参数:参数:rowsrows和和colscols分别指定网格的行数和列数,分别指定网格的行数和列数,h
17、gaphgap和和vgapvgap分别表示网格间的水平间距和垂直间分别表示网格间的水平间距和垂直间距。距。nGridLayoutGridLayout设置方法:设置方法:setLayout(newsetLayout(new GridLayoutGridLayout(行数、列数行数、列数)例:例:setLayout(newsetLayout(new GridLayout(3,4);GridLayout(3,4);rowsrows和和colscols中的一个值可以为中的一个值可以为0 0,但是两个值不能都是,但是两个值不能都是0 0。如果如果rowsrows为为0 0,那么网格的行数将根据实际需要而
18、定;,那么网格的行数将根据实际需要而定;如果如果colscols为为0 0,那么网格的列数将根据实际需要而定。,那么网格的列数将根据实际需要而定。GridLayoutGridLayout示例示例1.import java.awt.*;2.import javax.swing.*;3.class MyGrid4.private JFrame f;5.private Button b1,b2,b3,b4,b5,b6;6.public static void main(String args)7.MyGrid mygrid=new MyGrid();8.mygrid.go();9.10.void g
19、o()11.f=new JFrame(Grid Layout);12.f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);13.f.setLayout(new GridLayout(0,2,10,20);14.f.setSize(300,200);15.b1=new Button(b1);b2=new Button(b2);16.b3=new Button(b3);b4=new Button(b4);17.b5=new Button(b5);b6=new Button(b6);18.19.f.add(b1);f.add(b2);f.add(b
20、3);f.add(b4);f.add(b5);f.add(b6);20.JTextField jtext1=new JTextField(30);f.add(jtext1);21.JTextField jtext2=new JTextField(30);f.add(jtext2);22.f.setVisible(true);23.24.4.4.CardLayoutCardLayout CardLayoutCardLayout的容器可以容纳多个组件,的容器可以容纳多个组件,但是实际上同一时刻容器只能从这些组但是实际上同一时刻容器只能从这些组件中选出一个来显示,就象一叠件中选出一个来显示,就象一叠
21、“扑克扑克牌牌”每次只能显示最上面的一张。每次只能显示最上面的一张。示例(示例(CardTest.JavaCardTest.Java):为):为FrameFrame类的实例类的实例f f指定了一个指定了一个 CardLayoutCardLayout类型的布局管理器,类型的布局管理器,然后向其中加入了五张卡片,每张卡片都是然后向其中加入了五张卡片,每张卡片都是PanelPanel类的一个实例,并且具有不同的背景色。类的一个实例,并且具有不同的背景色。每当在程序窗口单击鼠标时,下一张卡片就每当在程序窗口单击鼠标时,下一张卡片就会显示出来。会显示出来。其他布局管理器其他布局管理器除了前面介绍的除了前
22、面介绍的FlowLayoutFlowLayout,BorderLayoutBorderLayout,GridLayoutGridLayout和和CardLayoutCardLayout四种布局管理器四种布局管理器之外,之外,java.awtjava.awt还提供了还提供了GridBagLayoutGridBagLayout布局布局管理器。管理器。GridBagLayoutGridBagLayout布局管理器以网格为基础,允布局管理器以网格为基础,允许组件使用最适当的大小,既可以占多个网许组件使用最适当的大小,既可以占多个网格,也可以只占一个网格的一部分。格,也可以只占一个网格的一部分。三三.容
23、器的布局容器的布局1.1.框架框架框架是带标题框的窗口,窗口的大小可以改框架是带标题框的窗口,窗口的大小可以改变。变。默认情况下,框架使用默认情况下,框架使用BorderLayoutBorderLayout布局管布局管理器,可以使用理器,可以使用setLayoutsetLayout()()对此进行修改。对此进行修改。2.2.面板面板面板是一个容器,并且是一个纯粹的容器,面板是一个容器,并且是一个纯粹的容器,它不能作为独立的窗口使用。它不能作为独立的窗口使用。默认情况下,面板使用默认情况下,面板使用FlowLayoutFlowLayout布局管理布局管理器,同样可以使用器,同样可以使用setLa
24、youtsetLayout()()方法对此进行方法对此进行修改。修改。面板可以像按钮那样被创建并加入到其他容面板可以像按钮那样被创建并加入到其他容器中。器中。当面板被加入某个容器时,可以对它执行以当面板被加入某个容器时,可以对它执行以下两项重要操作:下两项重要操作:l为面板指定一个布局管理器,使得在整个显示区为面板指定一个布局管理器,使得在整个显示区域中,面板所在的部分具有特殊的布局。域中,面板所在的部分具有特殊的布局。l向面板中加入组件。向面板中加入组件。n面板是通过构造方法面板是通过构造方法panel()panel()创建的。创建的。n面板在创建之后,必须通过面板在创建之后,必须通过add
25、()add()方法加入到方法加入到其他容器中才有意义。其他容器中才有意义。n综合示例综合示例:LayoutTest.javaLayoutTest.java6.26.2常用组件常用组件1.1.文本输入文本输入 文本域、文本区、标签文本域、文本区、标签2.2.选择组件选择组件 复选框、单选按钮复选框、单选按钮3.3.菜单菜单 弹出菜单、下拉菜单弹出菜单、下拉菜单4.4.对话框对话框 选择对话框、文件对话框选择对话框、文件对话框6.2.16.2.1文本输入文本输入用于文本输入的组件:用于文本输入的组件:文本框:文本框:用于进行单行文本输入输出,用于进行单行文本输入输出,其对应的类为其对应的类为JTe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Swing 组件 精品
限制150内