GUI编程(容器组件与布局).ppt

上传人:小飞机 文档编号:6506808 上传时间:2023-11-07 格式:PPT 页数:43 大小:500KB
返回 下载 相关 举报
GUI编程(容器组件与布局).ppt_第1页
第1页 / 共43页
GUI编程(容器组件与布局).ppt_第2页
第2页 / 共43页
GUI编程(容器组件与布局).ppt_第3页
第3页 / 共43页
GUI编程(容器组件与布局).ppt_第4页
第4页 / 共43页
GUI编程(容器组件与布局).ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《GUI编程(容器组件与布局).ppt》由会员分享,可在线阅读,更多相关《GUI编程(容器组件与布局).ppt(43页珍藏版)》请在三一办公上搜索。

1、1,GUI编程 容器组件与布局,2,大纲,JTabbedPane容器组件,设置图形界面的7个步骤,JFrame容器组件,JPane容器组件,布局管理器,3,设置图形界面的7个步骤,加载包创建窗口,并设置窗口属性,(大小,位置,关闭窗口时退出程序)创建JPanel面板创建其他组件,(如按钮,文本,标签)将组件添加到JPanel上将JPanel添加到窗口上显示窗口,4,顶级容器JFrame,是Window类的子类,是顶级窗口,不包含在任何的对象中,它直接出现在桌面。public class JFrame extends Frame implements WindowConstants,Access

2、ible,RootPaneContainer构造方法:new JFrame():创建一个不含标题的初始不可见窗口new JFrame(String title):创建一个含标题的初始不可见窗口,这个标题由参数title指定的,5,JFrame的常用方法,add(组件):添加组件setSize(300,200):设置大小setVisible(true):设置是否显示setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE):退出应用程序后的默认窗口关闭操作 setBackground(Color.颜色):设置背景颜色setForeground(Color.颜色)

3、:设置前景颜色pack():设置框架窗口初始大小为刚好只显示出所有的组件注意:前面set代表“设置”,get代表“获取”,6,示例,JFrame frame=new JFrame(“Java GUI应用程序”);/创建带标题“Java GUI应用程序”的框架对象frameframe.setSize(200,150);/设置框架窗口初始大小为200150点frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/在选择框架的关闭按钮时能退出程序frame.pack();/设置框架窗口初始大小为刚好只显示出所有的组件。frame.setVisibl

4、e(true);/显示框架对象代表的框架窗口,7,JPanel面板,面板是一个不含标题栏,菜单栏以及边框的窗口JPanel是一种添加到其他容器使用的容器组件,可将组件添加到JPanel,然后再将JPanel添加到某个容器。JPanel也提供一个绘画区域,可代替AWT的画布Canvas(没有JCanvas)。与窗口对比,面板不是一个独立的窗口,它只是包含在窗口中的一个区域。,8,JPanel面板,构造方法:public JPanel()创建具有缺省FlowLayout布局的JPanel对象。public JPanel(LayoutManager layout)创建具有指定布局管理器的JPanel

5、对象。,9,JPanel的常用方法,add(组件):添加组件setSize(300,200):设置大小setBounds(0,0,800,800);设置坐标,大小,10,可以直接使用JFrame添加组件,但是他们是不同层面,比如JFrame包含container,container包含JPanel,,当你要创造一个复杂的界面的时候,就会用到很多这样的结构。,为什么要用面板JPanel加上组件,不直接用框架JFrame?,11,示例,import java.awt.*;import javax.swing.*;class JPanelDemo extends JPanel JButton b1=

6、new JButton(JPanel);JButton b2=new JButton(Demo);public JPanelDemo()setBackground(Color.white);add(b1);add(b2);,12,public static void main(String args)JPanel jp=new JPanelDemo();jp.setBorder(BorderFactory.createTitledBorder(Hello,Border);JFrame frame=new JFrame(JPanelDemo);frame.setSize(200,150);fra

7、me.setContentPane(jp);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);,13,JTabbedPane容器组件,类继承于,它的对象反映为一组带标签的面板,每个面板都可以存放组件,因此JTabbedPane是一容器组件。,14,JTabbedPane容器组件,JTabbedPane类的构造方法有:JTabbedPane()创建空对象,该对象具有缺省的标签位置JTabbedPane.TOP和缺省的布局策略JTabbedPane.WRAP_TAB_LAYOUT。JTabbedP

8、ane(int tabPlacement)创建空对象,该对象具有指定的标签位置:1JTabbedPane.TOP、2JTabbedPane.BOTTOM、3JTabbedPane.LEFT、4JTabbedPane.RIGHT以及缺省的布局策略JTabbedPane.WRAP_TAB_LAYOUTJTabbedPane(int tabPlacement,int tabLayoutPolicy)创建空对象,该对象具有指定的标签位置和布局策略。,15,import java.awt.*;import javax.swing.*;class JTabbedPaneDemo1public static

9、 void main(String args)JFrame jf=new JFrame(JTabbedPane示例);JTabbedPane jt=new JTabbedPane(1);for(int i=0;i5;i+)jt.addTab(页标签+i,null);jf.add(jt,BorderLayout.CENTER);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setSize(400,200);jf.setVisible(true);,16,JTabbedPane jt=new JTabbedPane(n);,17,示例,J

10、TabbedPaneDemo.java,18,布局管理器,在容器中所有组件的布局(位置和大小)由布局管理器来控制。在Java语言中提供了FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout等多种布局管理器。每种容器都有自己缺省的布局管理器。缺省地,JPanel使用FlowLayout,而内容窗格 ContentPane(JApplet、JDialog和JFrame对象的主容器)使用BorderLayout。如果不希望使用缺省的布局管理器,则可使用所有容器的父类Container的setLayout()方法来改变缺省的布局管理器。

11、,19,FlowLayout流式布局,FlowLayout布局是一种最基本的布局。这种布局指的是把组件一个接一个从左至右、从上至下地依次放在容器上,每一行中的组件缺省为居中对齐。当容器的尺寸改变后,组件的大小不变,但布局将会随之变化。其默认方式为居中对齐方式,也可以手工设置左对齐或右对齐。,20,FlowLayout构造方法,构造方法如下:FlowLayout()创建每行组件对齐方式为居中对齐、组件间距为5个像素单位的对象FlowLayout(int align)创建指定每行组件对齐方式、组件间距为5个像素单位的对象,align可取三个静态常量LEFT、CENTER和RIGHT之一(分别表示左

12、、中、右对齐方式)。FlowLayout(int align,int hgap,int vgap)创建指定每行组件对齐方式的对象,该对象也使用参数vgap和hgap指定了组件间的以像素为单位的纵横间距。,21,创建默认的FlowLayout布局管理器:FlowLayout()以指定的对齐方式创建:FlowLayout(int)以指定的对齐方式及间距创建FlowLayout布局管理器:FlowLayout(int,int,int),FlowLayout.LEFT 0 FlowLayout.RIGHT 2 FlowLayout.CENTER 1,对齐方式,组件行间距,组件列间距,对齐方式为居中对齐

13、、组件间距为5个像素单位,22,FlowLayout添加组件,向使用FlowLayout布局的容器添加组件可简单地使用下面的语句:add(组件名);,23,示例,JPanel jp=new JPanel();/创建每行组件对齐方式为居中对齐、组件间距为5个像素单位的对象 jp.setLayout(new FlowLayout(FlowLayout.LEFT,10,10);/指定jp的布局管理器,对齐方式为左对齐、组件行间距与列间距均为10个像素,24,import java.awt.*;import javax.swing.*;class FlowLayoutDemopublic static

14、 void main(String args)JPanel jp=new JPanel();jp.setLayout(new FlowLayout(0,10,10);JButton jb=new JButton10;for(int i=0;i10;i+)jbi=new JButton(Button+i);jp.add(jbi);JFrame jf=new JFrame(my Frame);jf.setLocation(300,300);jf.setSize(300,400);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setCont

15、entPane(jp);jf.setVisible(true);,改变窗口大小时,25,BorderLayout边界布局,BorderLayout 是内容窗格的缺省布局管理器。内容窗格是框架JFrame,小程序JApplet和对话框JDialog的主容器。BorderLayout将容器的布局分为五个区:北区、南区、东区、西区和中区。这几个区的分布规律是“上北下南,左西右东”。当容器的大小改变时,容器中的各个组件相对位置不变,其中间部分组件的尺寸会发生变化,四周组件宽度固定不变。,26,BorderLayout,BorderLayout类的构造方法如下:BorderLayout()创建组件间无间

16、距的BorderLayout对象。BorderLayout(int hgap,int vgap)创建有指定组件间距的对象。,27,BorderLayout添加组件,向BorderLayout布局的容器添加组件时,每添加一个组件都应指明该组件加在哪个区域中。add(组件名,区域)方法的第二个参数指明加入的区域,区域东南西北中可用五个静态常量表示:BorderLayout.EASTBorderLayout.SOUTHBorderLayout.WESTBorderLayout.NORTHBorderLayout.CENTER,28,实例,将五个按钮加入BorderLayout的五个区。,29,imp

17、ort java.awt.*;import javax.swing.*;public class BorderLayoutDemo extends JFrame public static void main(String args)Container c=getContentPane();c.add(new Button(北North),BorderLayout.NORTH);c.add(new Button(南South),BorderLayout.SOUTH);c.add(new Button(东East),BorderLayout.EAST);c.add(new Button(西Wes

18、t),BorderLayout.WEST);c.add(new Button(中Center),BorderLayout.CENTER);,30,GridLayout网格布局,GridLayout布局是将容器的空间分成若干行和列的一个个网格,可以给出网格的行数和列数,组件添加到这些网格中。当改变容器的大小后,其中的组件相对位置不变,但大小改变。容器中各个组件同高度、同宽度。各个组件缺省的排列方式为:从上到下,从左到右。,31,GridLayout网格布局,GridLayout类的构造方法如下:public GridLayout()创建单行每个组件一列的GridLayout对象。public G

19、ridLayout(int rows,int cols)创建指定行列数的GridLayout对象。public GridLayout(int rows,int cols,int hgap,int vgap)创建指定行列数以及间距的GridLayout对象。,32,注意事项,因为没有容器缺省使用GridLayout,因此在使用GridLayout前,要用setLayout()方法将容器的布局管理器设置为GridLayout。在向GridLayout添加组件时,组件加入容器要按序进行,每个网格中都必须加入组件,若希望某个网格为空,可以为该网格加入一个空的标签:add(new JLabel()。,3

20、3,示例,import java.awt.*;import javax.swing.*;public class GridLayoutDemo public static void main(String args)JFrame jf=new JFrame(aa);Container c=jf.getContentPane();c.setLayout(new GridLayout(3,2);c.add(new Button(1);c.add(new Button(2);c.add(new Button(3);c.add(new Button(4);c.add(new Button(5);c.a

21、dd(new Button(6);jf.pack();jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setVisible(true);,34,CardLayout卡片布局,CardLayout布局管理器能够使得多个组件共享同一显示空间,这些组件之间的关系像一叠重叠的扑克牌,只有最上面的组件是可见的。注意:在一个显示空间(卡片)中只能显示一个组件,因此,可使用容器嵌套的方法来显示多个组件。,35,CardLayout,CardLayout类的构造方法如下:CardLayout()创建间距为零的对象。CardLayout(int hgap

22、,int vgap)创建带有水平hgap和垂直vgap间距的对象。,36,注意事项,为了使用叠在下面的组件,可以为每个组件取一名字,名字在用add()方法向容器添加组件时指定,需要某个组件时通过show()方法指定该组件的名字来选取它。也可以顺序使用这些组件,或直接指明选取第一个组件(用first()方法)或最后一个组件(用last()方法)。,37,示例,JFrame jf=new JFrame(aa);CardLayout cl=new CardLayout(20,40);/组件在卡片中有边界Container c=jf.getContentPane();c.setLayout(cl);J

23、Button b1=new JButton(卡片一);JButton b2=new JButton(卡片二);JButton b3=new JButton(卡片三);c.add(card1,b1);c.add(card2,b2);c.add(card3,b3);jf.pack();jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setVisible(true);,38,GridBagLayout,GridBagLayout是最复杂也最灵活的布局管理器。这个布局管理器将组件放入单元格中,但允许一些组件跨越单元格。可用GridBagLayo

24、ut类的构造方法GridBagLayout()来创建一个GridBagLayout布局管理器。因GridBagLayout布局设置比较复杂,这里就不介绍了,请参看API说明或其他资料。,39,自定义布局,null 布局管理器将主动权交给用户,由用户使用坐标系统来放置每个组件,即调用组件的setBounds()方法来设置位置和大小。如:this.setLayout(null);Label L1=new Label(“test”);L1.setBounds(108,2,98,37);Add(L1);注意,采用这种方式的布局,组件的位置和大小将不随窗口大小的变化而变化。,40,import java

25、.awt.*;import javax.swing.*;public class F1 extends JFrameF1()super(建设自己的布局管理器);Container c=getContentPane();c.setLayout(null);JButton jb1=new JButton(按钮1);JButton jb2=new JButton(按钮2);c.add(jb1);c.add(jb2);jb1.setBounds(10,10,100,30);jb2.setBounds(10,50,100,30);public static void main(String args)F1 jf=new F1();jf.setSize(200,150);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setVisible(true);,41,小结,2,JTabbedPane容器组件,布局管理器,4,JFrame容器组件,JPanel容器组件,42,作业,上机练习课件中的实例,43,下课休息,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号