面向对象程序设计GUI编程.ppt

上传人:本田雅阁 文档编号:2264895 上传时间:2019-03-13 格式:PPT 页数:36 大小:310.01KB
返回 下载 相关 举报
面向对象程序设计GUI编程.ppt_第1页
第1页 / 共36页
面向对象程序设计GUI编程.ppt_第2页
第2页 / 共36页
面向对象程序设计GUI编程.ppt_第3页
第3页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《面向对象程序设计GUI编程.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计GUI编程.ppt(36页珍藏版)》请在三一文库上搜索。

1、1,GUI 编程,第六章,2,回顾,运行时发生的错误称为异常。 Java 使用 try 和 catch 块来处理异常。try 块中的语句引发异常,而 catch 块则处理异常。 可以同时使用多个 catch 块来分别处理各种异常类型。 关键字 throws 用于列出一个方法可能引发的异常类型。 Java 中的垃圾收集就是将分配给对象但不再使用的内存回收或释放的过程。,3,目标,了解 Swing 包及其组件 掌握如何创建 GUI 程序 掌握 Swing 组件的基本用法 掌握如何使用布局管理器构造复杂的布局,4,抽象窗口工具包AWT,图形用户界面(GUI)可以通过键盘或鼠标来响应用户的操作。 抽象

2、窗口工具包(AWT)是一组Java类,此组Java类允许创建图形用户界面(GUI)。 AWT提供用于创建生动而高效的GUI的各种组件。,5,Swing技术,由于AWT的功能有限、其图形组件的绘制也不完全是平台独立等原因,Sun公司联合多家公司推出了与AWT完全兼容的图形用户界面框架Swing。Swing是在AWT的基础上构建的一套新的图形界面开发工具。,6,javax.swing 包中的类体系结构,7,容器,可以存放组件的区域,可在容器上进行绘制和着色 常用容器包括:窗体(JFrame类)和面板(JPanel类)。 窗体是一个带有边框的独立的窗口。 面板是包含在窗口中的一个不带边框的区域。,8

3、,容器 窗体,窗体用来构建Windows系统中的窗口应用程序。 可以通过以下任一构造函数来创建窗体: JFrame():创建一个不含标题的标准窗口 JFrame(String Title): 创建一个含有标题的窗口,这个标题是由参数title指定的。 当一个JFrame窗口被创建以后,需要调用setSize()方法来设置窗口的大小,并调用setVisible()来显示窗口。,9,容器 - 面板,面板不是一个单独的窗口,它只是包含在窗口中的一个区域。 面板是可以将许多组件组合起来的一种容器。 最简单的创建面板的方式就是通过面板的构造函数 JPanel() 来进行。 必须将面板添加到窗体中。,10

4、,使用容器示例,import javax.swing.*; class PanelTest extends JPanel public static void main(String args) PanelTest p= new PanelTest(); JFrame f=new JFrame(“正在测试面板!“); f.add(p); f.setSize(300,200); f.setVisible(true); ,使用GUI组件必须导入该包,将面板添加到 框架窗体中,11,Swing组件,组件指可以放置在用户界面上的任何东西,可以将组件设置为可见或重新调整其大小。 Swing支持的组件:标

5、签、文本域、文本区、按钮、复选框、选择框等。 高级组件包括滚动条、滚动窗格和对话框。 向窗口加入一个组件:首先生成所需组件的实例,然后调用add()方法,此方法是在Container类中定义的。,12,不同组件,标签,文本域,文本区,按钮,13,标签,可以通过以下任一构造函数来创建: JLabel( ) : 新建一个空标签 JLabel(String labeltext): 新建一个包含给定文本的标签 JLabel(String labeltext, int alignment) :新建一个包含给定对齐方式的标签,对齐方式可以为 JLabel.LEFT、JLabel.RIGHT 或 JLabe

6、l.CENTER,通常用来指明项目的用途 标签不可以被用户编辑,14,文本域,可以通过以下任一构造函数来创建: JTextField() : 新建一个文本域 JTextField(int columns) : 新建一个包含给定列数的文本域 JTextField(String s) : 新建一个包含给定字符串的文本域 JTextField(String s, int columns) : 新建一个包含给定字符串和列数的文本域,一种用来输入文本的GUI组件 只能接受一行输入,15,标签和文本域使用示例,import java.awt.*; class TextLabelDemo extends J

7、Frame JLabel lblName=new JLabel(“名称 :”); JTextField txtName=new JTextField(20); public TextLabelDemo (String title) super(title); setLayout(new FlowLayout(); add(lblName); add(txtName); public static void main(String args) TextLabelDemo t=new TextLabelDemo(“正在测试组件!“); t.setSize(300,200); t.setVisibl

8、e(true); ,新建一个标签,新建一个文本域,添加到窗口,16,文本区,可以通过以下构造函数来创建: JTextArea( ) : 新建一个TextArea JTextArea(int rows, int cols) : 新建一个包含给定行数和列数的TextArea JTextArea(String text, int rows, int cols) : 新建一个包含给定字符串、行数和列数的TextArea,要接受输入多行文本时使用 可以包括滚动条,. . . JTextArea txtComment=new JTextArea(); add(txtComment); . . .,17,按

9、钮,可以使用以下任一构造函数来创建按钮: JButton() : 新建一个空的按钮 JButton(String text) : 新建一个包含给定字符串的按钮,按钮是任何GUI都不可或缺的组件 用来捕捉用户操作的最为简便的方式,. . . JButton btnOk=new JButton(“确定!“); JButton btnCancel=new JButton(“取消!“); add(btnOk); add(btnCancel); . . .,18,复选框,可以使用以下任一构造函数来创建复选框: - JCheckbox():创建一个空的复选框,且未被选中 - JCheckbox(Strin

10、g text):创建一个用给定字符串作为标签的复选框,且未被选中 - JCheckbox(String text,Boolean on):创建一个标签由参数text指定的复选框,允许通过参数on设定复选框的初始状态。,用于多选项的用户输入,用户可以通过单击复选框来选定或取消选定某选项。,19,单选按钮,可以通过复选框组生成一系列互斥的复选框,实现单选按钮功能。 在一组单选按钮中只能选择一个按钮。 首先创建一个 ButtonGroup 对象。 ButtonGroup bg=new ButtonGroup(); 然后再创建各单选按钮。 JRadioButton male=JRadioButton(

11、“男“); JRadioButton female=JRadioButton(“女”); bg.add(male);bg.add(female);,20,复选框和单选按钮使用示例,import java.awt.*; import javax.swing.*; class Qualification extends Frame JRadioButton t1=new JRadioButton(“Visual Basic“); JRadioButton t2=new JRadioButton(“Visual C+“); JRadioButton t3=new JRadioButton(“Java

12、“); ButtonGroup bg=new ButtonGroup();bg.add(t1);bg.add(t2); JCheckbox r1=new JCheckbox(“专科“); JCheckbox r2=new JCheckbox(“本科“); JCheckbox r3=new JCheckbox(“硕士“); JCheckbox r4=new JCheckbox(“博士“); JLabel lb1=new JLabel(“您的学历为:“ ); JLabel lb2=new JLabel(“您精通的语言为:“ );,新建单选按钮,新建一个单选按钮组,新建复选框,public Qual

13、ification(String s ) super(s);setLayout(new GridLayout(10,1); add(r1);add(r2);add(r3); add(r4); add(t1);add(t2);add(t3); public static void main(String args) Qualification q=new Qualification (“学识!“); q.setSize(400,250); q.show( ); ,将单选按钮添加到窗体,将复选框添加到窗体,21,选择框,用 JComboBox 类可以创建一个选择框 JComboBox combob

14、ox = new JComboBox( ); 通过 addItem() 方法可以添加项目 combobox.addItem(“安东尼奥.班德拉斯“); combobox.addItem(“莱昂纳多.迪卡普尼奥“); combobox.addItem(“桑德.布洛克“); combobox.addItem(“休.葛兰特“); combobox.addItem(“朱莉亚.罗萡茨“);,用来向用户显示一个选择列表,22,布局管理器,用户界面上的组件可以按不同方式排列。 Java使用布局管理器来管理这些排列方式。 每当需要重新调整屏幕大小或重新绘制屏幕上任一项目时,就要用到布局管理器。 AWT提供一组

15、用来进行布局管理的类,称为布局管理器或布局。所有布局都实现 LayoutManager接口。,23,布局类型,Java中的布局类型包括以下几种: FlowLayout(流式布局) BorderLayout (边界布局) GridLayout(网格布局) GridBagLayout(网格包布局) CardLayout (卡片布局),24,布局类型的选用,每个布局管理器都有自己特定的用途。 要按行和列显示几个同样大小的组件,GridLayout 会比较合 要在尽可能大的空间里显示一个组件,就要选择 BorderLayout 或 GridBagLayout,25,如何设置布局,每个容器(Contai

16、ner对象)都有一个与它相关的缺省的布局管理器。 - Applet 的缺省布局是 FlowLayout 在没有设置新的布局前,在容器中添加组件都按照该容器的缺省布局排列。 可以通过setLayout( )方法为容器设置新的布局。,26,FlowLayout,FlowLayout的构造函数有: FlowLayout( ):生成一个默认的流式布局 FlowLayout(int alignment):可以设定每一行组件的对齐方式 FlowLayout(int alignment,int horz,int vert):可以设定组件间的水平和垂直距离,Applet和面板的缺省布局 组件从左上角开始按从左

17、到右、从上到下的方式排列,FlowLayout mylayout = new FlowLayout(); FlowLayout exLayout = new FlowLayout(FlowLayout.RIGHT); setLayout(exlayout); / 为容器设置新布局,27,BorderLayout 2-1,下面是BorderLayout所定义的构造函数: - BorderLayout( ):生成默认的边界布局 - BorderLayout(int horz,int vert): 可以设定组件间的水平和垂直距离,窗口、框架和对话框等的缺省布局 组件可被置于容器的北、南、东、西或中间

18、位置,28,BorderLayout 2-2,BorderLayout 类定义了几个常量值以指定相应区域: BorderLayout.NORTH 对应容器的顶部 BorderLayout.EAST 对应容器的右部 BorderLayout.SOUTH 对应容器的底部 BorderLayout.WEST 对应容器的左部 BorderLayout.CENTER 对应容器的中部 加入组件方法: void add(Component Obj, int region);,. . . setLayout(new BorderLayout(); Button btnEast=new Button(“东“);

19、 Button btnWest=new Button(“西“); Button btnNorth=new Button(“北“); Button btnSouth=new Button(“南“); Button btnCenter=new Button(“中“); add(btnEast,BorderLayout.EAST); add(btnWest,BorderLayout.WEST); add(btnNorth,BorderLayout.NORTH); add(btnSouth,BorderLayout.SOUTH); add(btnCenter,BorderLayout.CENTER);

20、 . . .,29,GridLayout,GridLayout的构造函数如下所示: - GridLayout():生成一个单列的网格布局 - GridLayout(int row,int col):生成一个设定行数和列数的网格布局 - GridLayout(int row,int col,int horz,int vert):可以设置组件之间的水平和垂直间隔,用于将容器区域划分为一个矩形网格 组件按行和列排列,. . . Button btn; / 声明按钮数组 String str=“1“,“2“,“3“,“4“,“5“,“6“,“7“,“8“,“9“; setLayout(new Grid

21、Layout(3,3); btn=new Buttonstr.length; / 创建按钮数组 for(int i=0;istr.length;i+) btni=new Button(stri); add(btni); ,30,GridBagLayout,通过使用以下语法容器可获得 GridBagLayout: GridBagLayout gb=new GridBagLayout(); ContainerName.setLayout(gb); 要使用此布局,必须提供各组件的大小和布局等信息。 GridBagConstraints 类中包含 GridBagLayout 类用来定位及调整组件大小所

22、需的全部信息。,组件大小不必相同 组件按行和列排列 放置顺序不一定为从左至右和由上至下,31,GridBagConstraints 类 2-1,成员变量列表: gridx, gridy : 指定组件放置于哪个单元中 gridwidth, gridheight : 指定组件将占用多少行和多少列 weightx, weighty : 指定在一个 GridBagLayout 中应如何分配空间,这些变量的缺省值为 0 ipadx, ipady : 指定组件的最小高度和宽度,32,成员变量列表: fill : 指定在单元大于组件的情况下,组件如何填充此单元,共有4可选值。缺省值为:GridBagCons

23、traints.NONE anchor : 指定将组件放置在单元中的位置,共有9个可选值。缺省值为:GridBagConstraints.CENTER,GridBagConstraints 类2-2,33,CardLayout,可存储几个不同的布局。 每个布局就像是一个卡片组中的一张卡片。 在一个给定的时间总会有一张卡片在顶层。 卡片通常为一个 Panel 对象。 每当需要许多面板切换,而每个面板需要显示为不同布局时,可以使用卡片布局。,34,总结,Swing是一组类,它允许创建图形用户界面,并能够通过键盘和鼠标响应用户的操作。 容器指可以存放组件的区域,两种常用容器类:窗体(JFrame类)

24、和面板(JPanel类)。 窗体是一个单独的窗口,而面板只是包含在窗口中的一个区域。 Swing支持下列类型的组件:标签、文本域、文本区、按钮、复选框、列表框等。,35,总结,布局管理器类提供控制 GUI 组件物理布局的一种方式。 以下是几种不同类型的布局: FlowLayout BorderLayout CardLayout GridLayout GridBagLayout 布局可通过 setLayout( ) 方法进行设置。,36,总结,FlowLayout 是 Applet 和 面板的缺省布局管理器。组件从左上角到右下角进行排列。 BorderLayout 按北、南、东、西、中的不同区域划分将组件排列于容器中。 GridLayout 将组件按行和列排列。所有组件大小相同。 GridBagLayout 能将组件放置在最精确的位置。各组件的大小可以不同。 CardLayout可存储几个不同的布局管理器,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1