您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 第九章-图形用户界面.
ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面JAVAGUI第九章ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面目标了解AWT包及其组件掌握如何创建GUI程序掌握AWT组件的基本用法掌握如何使用布局管理器构造复杂的布局2ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面JavaGUI编程GUI——GraphicUserInterface的缩写,图形用户界面的意思。前面编写的程序都是在控制台下进行的,用户交互的形式非常单一,GUI程序就是为了创建所见即所得的用户交互界面而产生。GUI由一些组件组成,这些组件在java中称为Component,比如所见到的诸如窗口、按钮、文本框、单选按钮、多选按钮等等。GUI设计主要包含三方面的工作:创建组件、布局管理和事件处理。3ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面主要图形控件4ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面抽象窗口工具包图形用户界面(GUI)可以通过键盘或鼠标来响应用户的操作。抽象窗口工具包(AWT)是一组Java类,此组Java类允许创建图形用户界面(GUI)。AWT提供用于创建生动而高效的GUI的各种组件。5ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面SwingGUI继承关系6ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面容器7•可以存放组件的区域,可在容器上进行绘制和着色•java.awt包中的Container类可直接或间接派生出两个常用容器:框架(Frame类)和面板(Panel类)。•框架是一个带有边框的独立的窗口。•面板是包含在窗口中的一个不带边框的区域。ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面容器–框架8•框架是独立于Applet和浏览器的一个窗口。•可以通过以下任一构造函数来创建:–Frame():创建一个不含标题的标准窗口–Frame(StringTitle):创建一个含有标题的窗口,这个标题是由参数title指定的。•当一个Frame窗口被创建以后,需要调用setSize()方法来设置窗口的大小,并调用setVisible()来显示窗口。ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面容器-面板9•面板不是一个单独的窗口,它只是包含在窗口中的一个区域。•面板是可以将许多组件组合起来的一种容器。•最简单的创建面板的方式就是通过面板的构造函数Panel()来进行。•必须将面板添加到窗体中。ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面使用容器示例importjava.swing.*;Importjava.awt.*;classPanelTestextendsJPanel{publicstaticvoidmain(Stringargs[]){PanelTestp=newPanelTest();JFramejf=newJFrame(正在测试面板!);jf.add(p);jf.setSize(300,200);jf.setVisible(true);}}10使用GUI组件必须导入该包ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面AWT组件11•组件指可以放置在用户界面上的任何东西,可以将组件设置为可见或重新调整其大小。•AWT支持的组件:标签、文本域、文本区、按钮、复选框、选择框等。•高级组件包括滚动条、滚动窗格和对话框。•向窗口加入一个组件:首先生成所需组件的实例,然后调用add()方法,此方法是在Container类中定义的。ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面标签12•可以通过以下任一构造函数来创建:–JLabel():新建一个空标签–JLabel(Stringlabeltext):新建一个包含给定文本的标签–JLabel(Stringlabeltext,intalignment):新建一个包含给定对齐方式的标签,对齐方式可以为Label.LEFT、Label.RIGHT或Label.CENTER通常用来指明项目的用途标签不可以被用户编辑ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面文本域13•可以通过以下任一构造函数来创建:-JTextField():新建一个文本域-JTextField(intcolumns):新建一个包含给定列数的文本域-JTextField(Strings):新建一个包含给定字符串的文本域-JTextField(Strings,intcolumns):新建一个包含给定字符串和列数的文本域一种用来输入文本的GUI组件只能接受一行输入ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面标签和文本域使用示例importjava.awt.*;importjavax.swing.*;classTextLabelDemoextendsJFrame{JLabellblName=newJLabel(“名称:”);JTextFieldtxtName=newJTextField(20);publicTextLabelDemo(Stringtitle){super(title);Containercp=getContentPane();cp.setLayout(newFlowLayout());cp.add(lblName);cp.add(txtName);}publicstaticvoidmain(Stringargs[]){TextLabelDemot=newTextLabelDemo(正在测试组件!);t.setSize(300,200);t.setVisible(true);}}14ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面文本区15•可以通过以下构造函数来创建:-JTextArea():新建一个TextArea-JTextArea(introws,intcols):新建一个包含给定行数和列数的TextArea-JTextArea(Stringtext,introws,intcols):新建一个包含给定字符串、行数和列数的JTextArea要接受输入多行文本时使用可以包括滚动条...JTextAreatxtComment=newJTextArea();cp.add(txtComment);...ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面按钮16•可以使用以下任一构造函数来创建按钮:-JButton():新建一个空的按钮-JButton(Stringtext):新建一个包含给定字符串的按钮按钮是任何GUI都不可或缺的组件用来捕捉用户操作的最为简便的方式...JButtonbtnOk=newJButton(确定!);JButtonbtnCancel=newJButton(取消!);cp.add(btnOk);cp.add(btnCancel);...ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面布局管理器17•用户界面上的组件可以按不同方式排列。•Java使用布局管理器来管理这些排列方式。•每当需要重新调整屏幕大小或重新绘制屏幕上任一项目时,就要用到布局管理器。•AWT提供一组用来进行布局管理的类,称为布局管理器或布局。所有布局都实现LayoutManager接口。ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面布局类型18•Java中的布局类型包括以下几种:-FlowLayout(流式布局)-BorderLayout(边界布局)-GridLayout(网格布局)-GridBagLayout(网格包布局)-CardLayout(卡片布局)ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面布局类型的选用19•每个布局管理器都有自己特定的用途。-要按行和列显示几个同样大小的组件,GridLayout会比较合-要在尽可能大的空间里显示一个组件,就要选择BorderLayout或GridBagLayoutProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面如何设置布局20•每个容器(Container对象)都有一个与它相关的缺省的布局管理器。-Applet的缺省布局是FlowLayout•在没有设置新的布局前,在容器中添加组件都按照该容器的缺省布局排列。•可以通过setLayout()方法为容器设置新的布局。ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面FlowLayout21•FlowLayout的构造函数有:-FlowLayout():生成一个默认的流式布局-FlowLayout(intalignment):可以设定每一行组件的对齐方式-FlowLayout(intalignment,inthorz,intvert):可以设定组件间的水平和垂直距离Applet和面板的缺省布局组件从左上角开始按从左到右、从上到下的方式排列FlowLayoutmylayout=newFlowLayout();FlowLayoutexLayout=newFlowLayout(FlowLayout.RIGHT);setLayout(exlayout);//为容器设置新布局ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面BorderLayout2-122•下面是BorderLayout所定义的构造函数:-BorderLayout():生成默认的边界布局-BorderLayout(inthorz,intvert):可以设定组件间的水平和垂直距离窗口、框架和对话框等的缺省布局组件可被置于容器的北、南、东、西或中间位置ProgrammingLanguageJava:西安邮电学院计算机学院——王博第九章——图形用户界面BorderLayout2-2BorderLayout类定义了几个常量值以指定相应区域:-BorderLayout.NORTH–对应容器的顶部-BorderLayout.EAST–对应容器的右部-BorderLayout.SOUTH–对应容器的底部-BorderLayout.WEST–对应容器的左部-BorderLayout.CENTER–对应容器的中部•加入组件方法:voidadd(ComponentObj,intregion);23...setLayout(newBorderLayout());ButtonbtnEast=newButton(东);ButtonbtnWest=newButton(西);ButtonbtnNorth=newButton(北);ButtonbtnSouth=newButton(南);ButtonbtnCenter=newButton(中);add(btnEast,BorderLayout.EAST);add(btnWest,BorderLayout.WEST);add(btnNorth,BorderLayout.
本文标题:第九章-图形用户界面.
链接地址:https://www.777doc.com/doc-2123661 .html