第13章 JAVA图形用户界面设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第13章图形用户界面设计第13章JAVA图形用户界面设计13.1GUI概述13.2组件的创建与使用13.3布局管理器13.4事件处理第13章图形用户界面设计13.1GUI概述通过图形用户界面(GraphicsUserInterface,GUI),用户和程序之间可以方便地进行交互。Java语言提供了专门的类库来生成各种标准图形界面元素和处理图形界面的各种事件,以实现图形用户界面的设计。Java语言中,设计和实现GUI主要分为以下3个步骤:(1)创建组件(Component):建立可以显示的元素。(2)指定布局(Layout):排列组件位置。(3)响应事件(Event):与用户产生交互。第13章图形用户界面设计为了完成上述工作,Sun为我们提供了两个专门的工具包:一个是抽象窗口工具包(AbstractWindowToolkit,AWT),另一个是Swing包。下面根据包产生的先后顺序来逐一介绍。AWT包是为Java程序提供的建立图形用户界面的工具集,可用于Java的Applet和Application中。它的功能包括:用户界面组件、事件处理模型、图形和图像工具(包括形状、颜色和字体类)、布局管理器等。AWT是Swing的基础,Swing的产生原因主要是AWT不能满足图形化用户界面发展的需要。第13章图形用户界面设计随着发展的需要,Sun公司在Java1.2版中推出了新的用户界面库Swing。相对于AWT来说,Swing功能更强大,使用更方便,它的出现使得Java的图形用户界面上了一个台阶。Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级(Light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。Swing比AWT组件具有更强的实用性。Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其他特性。但是Swing并没有代替AWT。在Java1.1版中,AWT事件处理模型有了根本改变。Swing使用的仍然是Java1.1版的事件处理模型。第13章图形用户界面设计13.1.1AWT简介Java语言的AWT包包含了许多类来支持GUI设计。AWT提供了用于所有JavaApplets及应用程序的基本GUI组件,还为应用程序提供了与机器无关的界面,从而保证了一台计算机上出现的内容与另一台上的内容相一致。前面已介绍过,超类可以扩展,其属性是可继承的。另外,类可以被抽象化,这就是说,它们是可被分成子类的模板,子类用于类的具体实现。第13章图形用户界面设计显示在屏幕上的每个GUI组件都是抽象类组件的子类。也就是说,每个从组件类扩展的图形对象都与允许它们运行的大量方法和实例变量共享。Container是Component的一个抽象子类,它允许其他组件被嵌套在里面。这些组件也可以是允许其他组件被嵌套在里面的容器,于是就创建了一个完整的层次结构。在屏幕上布置GUI组件时,Container是很有用的。Panel是Container的最简单的类。Container的另一个子类是Window。AWT由Java语言的java.awt提供,该包中有许多用来设计GUI的组件类,如按钮、菜单、列表、文本框等组件类,同时它还包括窗口、面板等容器。AWT是Java语言进行GUI程序设计的基础。第13章图形用户界面设计13.1.2Swing简介Swing是Java基础类库(JavaFoundationClass,JFC)提供的新的图形界面类库。在JFC的新特性中,Swing是其中最主要的部分。Swing为基于窗体的应用开发设计提供了一套精美、丰富的基本组件以及一个能使图形用户界面独立于特定平台的显示框架。用Swing组件设计的程序比用AWT设计的程序具有更加优美的外观感受。Swing是一个扩展的AWT,它提供了一个远大于AWT的综合的组件集合,并引入了新的概念和性能。第13章图形用户界面设计javax.swing包中定义了两种类型的组件:顶层容器(即重量级组件)(JFrame、JApplet、JDialog、JWindow)和轻量级组件。Swing组件从AWT的Container类继承而来,轻量级组件是除顶层容器外的“J”类组件,它们是继承AWTContainer类的JComponent类及其子类。与AWT比较,Swing提供了更完整的组件,引入了许多新的特性和能力。SwingAPI是围绕着实现AWT各个部分的API构筑的,从而保证了所有早期的AWT组件仍然可以使用。第13章图形用户界面设计13.2组件的创建与使用1. Frame框架Frame是Window的一个子类,是带有标题和缩放角的窗口,继承Java.awt.Container,因此,可以用add()方法来给框架添加组件。框架的默认布局管理器就是BorderLayout,但可以用setLayout()方法来改变。框架类中的构造程序Frame(String)用由String规定的标题来创建一个新的不可见的框架对象。当它还处于不可见状态时,将所有组件添加到框架中。Frame类是顶层容器,具有以下特点:(1) Frame类是Window类的直接子类。(2) Frame对象显示的效果是一个窗口,带有标题和尺寸。第13章图形用户界面设计(3) Frame被默认为初始化是不可见的,可以使用setVisible(true)方法使之可见。(4) Frame默认的布局管理器是BorderLayout,可以使用setLayout()方法改变默认布局。Frame类的常用构造方法如下:Framef1=newFrame();Framef2=newFrame(Strings);//s为框架标题第13章图形用户界面设计【例13-1】第一个JFrame窗体程序。publicclassJFrameDemo{publicstaticvoidmain(String[]args){JFramejf=newJFrame(这是我的第一个swing窗体);Dimensiond=newDimension(300,200);jf.setSize(d);Pointp=newPoint(500,400);jf.setLocation(p);jf.setVisible(true);}}第13章图形用户界面设计2.标签组件JLabel(1)定义标签对象。publicclassJLabelDemo{publicstaticvoidmain(String[]args){JFramejf=newJFrame(这是我的第一个swing窗体);JLabellab=newJLabel(KENDE,JLabel.CENTER);//实例化标签对象jf.add(lab);//将Label组件添加到JFrame面板中Dimensiond=newDimension(300,200);jf.setSize(d);Pointp=newPoint(500,400);第13章图形用户界面设计jf.setLocation(p);jf.setVisible(true);}}(2)定义标签字体。标签可以设置字体,包括字的字体、颜色、大小以及是否斜体等。publicclassJLabelDemo2{publicstaticvoidmain(String[]args){JFramejf=newJFrame(这是我的第一个swing窗体);JLabellab=newJLabel(KENDE,JLabel.CENTER);//实例化标签对象Fontfont=newFont(Dialog,Font.ITALIC+Font.BOLD,30);第13章图形用户界面设计lab.setFont(font);jf.add(lab);//将组件添加到面板中Dimensiond=newDimension(300,200);jf.setSize(d);Pointp=newPoint(500,400);jf.setLocation(p);jf.setVisible(true);}}第13章图形用户界面设计(3)得到本机中所有的字体。publicclassGetAllFonts{publicstaticvoidmain(String[]args){GraphicsEnvironmentg=GraphicsEnvironment.getLocalGraphicsEnvironment();Stringfonts[]=g.getAvailableFontFamilyNames();for(Stringname:fonts){System.out.println(name);}}}第13章图形用户界面设计(4)在Label中设置显示的图片。publicclassJLabelDemo3{publicstaticvoidmain(String[]args){JFramejf=newJFrame(这是我的第一个swing窗体);Iconicon=newImageIcon(E:\\picBackGroud\\野生动物王国.jpg);JLabellab=newJLabel(KENDE,icon,JLabel.CENTER);//实例化标签对象Fontfont=newFont(Serif,Font.ITALIC+Font.BOLD,30);lab.setFont(font);jf.add(lab);//将组件添加到面板中第13章图形用户界面设计Dimensiond=newDimension(300,200);jf.setSize(d);Pointp=newPoint(500,400);jf.setLocation(p);jf.setVisible(true);}}第13章图形用户界面设计3.在JFrame中增加按钮publicclassJButtonDemo01{publicstaticvoidmain(String[]args){JFrameframe=newJFrame(WelcometoKende'shome!);JButtonbt=newJButton(按钮);frame.add(bt);frame.setSize(300,200);frame.setLocation(400,300);frame.setVisible(true);}}第13章图形用户界面设计4.向JButton中添加图片publicclassJButtonDemo02{publicstaticvoidmain(String[]args){JFrameframe=newJFrame(WelcometoKende'shome!);StringpicPath=E:\\picBackGroud\\a.jpg;Iconicon=newImageIcon(picPath);JButtonbt=newJButton(icon);frame.add(bt);frame.setSize(800,500);frame.setLocation(400,300);frame.setVisible(true);}}第13章图形用户界面设计5.向JPanel中添加组件最早是在JFrame中加入组件,但是现在可以将组件加入到JPanel中,在JPanel中完成各个组件的排列,之后再将所有独立的JPanel直接放在JFrame之中,以完成复杂的图形显示。publicclassJPanelDemo01{publicstaticvoidmain(String[]args){JFrameframe=newJFrame(Welcometokende'shome);JPanelpanel=newJPanel();panel.add(newJLabel(标签-1));第13章图形用户界面设计panel.add(newJLabel(标签-2));panel.add(newJLabel(标签-3));panel.add(newJButton(按钮-X));panel.add(newJButton(按钮-Y));panel.a

1 / 76
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功