Java图形用户界面设计Java语言程序设计(第2版)电子教案.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Java图形用户界面设计Java语言程序设计(第2版)电子教案.ppt》由会员分享,可在线阅读,更多相关《Java图形用户界面设计Java语言程序设计(第2版)电子教案.ppt(141页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、9.1图形用户界面设计概述v9.1.1 GUI支持包和简单GUI程序例v1.java.awt包 vJava语言在java.awt包中提供了大量地进行GUI设计所使用的类和接口,包括绘制图形、设置字体和颜色、控制组件、处理事件等内容,AWT是Java语言进行GUI程序设计的基础。v2.javax.swing包vSwing包是Java基础类库(Java Foundation Classes,JFC)的一部分。Swing提供了从按钮到可分拆面板和表格的所有组件。vSwing组件是Java语言提供的第二代GUI设计工具包,它以AWT为基础,在AWT内容的基础上新增或改进了一些GUI组件,使得GUI程序
2、功能更强大,设计更容易、更方便。Swing是开发新组件的项目代码名,现在,这个名字常用来引用新组件和相关的API。vAWT组件和对应的Swing组件,从名称上很容易记忆和区别。例如,AWT的框架类、面板类、按钮类和菜单类,被命名为Frame、Panel、Button和Menu,而Swing对应的组件类被命名为JFrame、JPanel、JButton和JMenu。与AWT组件相比,Swing组件的名前多一个“J”字母。另 外,AWT 组 件 在 java.awt包 中,而 Swing组 件 在javax.swing包中。v3.一个Java GUI简单程序v【例9.1】一个简单的Swing GU
3、I应用程序。在一个框架窗口中显示两个标签和一个按钮:上面的标签显示一串固定的文字信息,选择按钮后在下面的标签上显示系统现在的时间。import java.awt.*;import java.awt.*;import java.awt.event.*;import java.awt.event.*;import javax.swing.*;import javax.swing.*;import java.util.*;import java.util.*;/继承继承JFrameJFrame类并实现类并实现ActionListenerActionListener接口接口public class S
4、wingDemo extends JFrame implementspublic class SwingDemo extends JFrame implements ActionListener ActionListener JButton b1;/JButton b1;/声明按钮对象声明按钮对象 JLabel l1,l2;/JLabel l1,l2;/声明标签对象声明标签对象 SwingDemo()/SwingDemo()/定义构造方法定义构造方法 super(Swing super(Swing应用程序的例应用程序的例);/);/调用父类的构造方法调用父类的构造方法 l1=new JLabe
5、l(l1=new JLabel(一个一个GUIGUI应用程序的例子应用程序的例子,JLabel.CENTER);/JLabel.CENTER);/定义标签,文字居中定义标签,文字居中 l2=new JLabel();/l2=new JLabel();/定义无文字标签定义无文字标签 b1=new JButton(b1=new JButton(现在时间现在时间 T);/T);/定义按钮定义按钮 b1.setMnemonic(KeyEvent.VK_T);/b1.setMnemonic(KeyEvent.VK_T);/设置按钮的快捷键设置按钮的快捷键 b1.setActionCommand(time
6、);/b1.setActionCommand(time);/设置控制名设置控制名 b1.addActionListener(this);/b1.addActionListener(this);/注册按钮事件注册按钮事件 add(l1,BorderLayout.NORTH);/add(l1,BorderLayout.NORTH);/添加标签添加标签l1l1 add(l2,BorderLayout.CENTER);/add(l2,BorderLayout.CENTER);/添加标签添加标签l2l2 add(b1,BorderLayout.SOUTH);/add(b1,BorderLayout.SO
7、UTH);/添加标签添加标签b1b1 /对按钮引发事件编程对按钮引发事件编程 public void actionPerformed(ActionEvent e)public void actionPerformed(ActionEvent e)/捕获按钮事件捕获按钮事件 Calendar c1=Calendar.getInstance();Calendar c1=Calendar.getInstance();/获取系统日期和事件获取系统日期和事件 if(e.getActionCommand().equals(time)if(e.getActionCommand().equals(time)/
8、判断是否为所需的按钮事件判断是否为所需的按钮事件 l2.setText(“l2.setText(“现在时间是现在时间是”+”+c1.get(Calendar.HOUR_OF_DAY)c1.get(Calendar.HOUR_OF_DAY)+“+“时时”+”+c1.get(Calendar.MINUTE)+“c1.get(Calendar.MINUTE)+“分分”);”);/设置标签文字设置标签文字 l2.setHorizontalAlignment(JLabel.CENTER);l2.setHorizontalAlignment(JLabel.CENTER);/设置标签标签文字居中对齐设置标签
9、标签文字居中对齐 else System.exit(0);else System.exit(0);public static void main(String args)/public static void main(String args)/主方法主方法 JFrame.setDefaultLookAndFeelDecorated(true);JFrame.setDefaultLookAndFeelDecorated(true);/加此语句显示为运行结果图的右图加此语句显示为运行结果图的右图 JFrame frame=new SwingDemo();JFrame frame=new Swin
10、gDemo();/创建创建JFrameJFrame对象,初始不可见对象,初始不可见 frame.setDefaultCloseOperation(frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/JFrame.EXIT_ON_CLOSE);/设置框架关闭按钮事件设置框架关闭按钮事件 frame.pack();/frame.pack();/压缩框架的显示区域压缩框架的显示区域 frame.setVisible(true);/frame.setVisible(true);/显示框架主窗口显示框架主窗口 v程序运行后显示的形式如下图。vJav
11、a Swing GUI应用程序中的基本代码如下。v(1)引入合适的包和类v一般的Swing GUI应用程序应包含程序中的前三个引入语句,它们分别表示引入awt包、awt事件处理包和swing包。其他包按需引入。v由于Swing组件使用AWT的结构,包括AWT的事件驱动模式,所以,使用swing组件的程序一般需要使用awt包。v(2)使用缺省的观感或设置自己的观感(Look and Feel)v(3)设置一个顶层的容器v(4)根据需要,使用缺省的布局管理器或设置另外的布局管理器v(5)定义组件并将它们添加到容器v(6)对组件或事件编码v9.1.2 容器、组件、布局和观感v1.容器(Contain
12、er)和组件(Component)v一个Java的图形用户界面的最基本元素是组件,组件是可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,如一个按钮、一个文本框等。在Java语言中,通常将组件放在一定的容器内使用。容器实际上是一种具有容纳其他组件和容器的功能的组件。抽象类Container是所有容器的父类,其中包含了很多有关容器的功能和方法。而 类 Container又 是 Java语 言 的 组 件 类Component的子类。v2.布局管理器(Layout Manager)v为了使得图形用户界面具有良好的平台无关性,在Java语言中提供了布局管理器这个工具来管理组件在容器中的布局,而
13、不使用直接设置组件位置和大小的方式。容器中的组件定位由布局管理器决定。每个容器都有一个缺省的布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其相应的布局管理器。但也可以不用缺省的布局管理器,在程序中指定其新的布局管理器。vJava平台提供多种布局管理器,常用的有FlowLayout、BorderLayout、GridLayout、CardLayout、BoxLayout和GridBagLayout等。使用不同的布局管理器,组件在容器上的位置和大小都是很不一样的。v在程序中安排组件的位置和大小时,应该注意:v(1)容器中的布局管理器负责各个组件的大小和位置。因此用户无法在这种
14、情况下直接设置这些属性。若试图使 用 Java语 言 提 供 的 setLocation()、setSize()、setBounds()等方法,则都会被布局管理器覆盖。v(2)若用户确实需要亲自设置组件的位置和大小,则应取消该容器的布局管理器,方法为:setLayout(null);setLayout(null);v随 后,用 户 必 须 使 用 setLocation()、setSize()、setBounds()等方法为组件设置大小和位置,但这种方法将会导致程序的系统相关。v在一个GUI应用程序的界面上,除了可以见到上述的标准GUI元素外,还可以见到一些非交互的起到装饰、美化界面的作用的几
15、何图形、图案、图像等内容。v3.观感(Look and Feel)vJava swing的一个重要特征是它的可插入的“观感”体系。一个Swing应用程序或一个最终用户可指明所需要的观感,使得Swing应用程序的外观和行为都可以被定制。Swing运行一个缺省的Java观感(也称为Metal观感),还实现了模仿Motif和Windows的观感。这样,一个Swing程序可拥有Java程序的独特外观,也可以拥有熟悉的Windows操作系统外观。v在本章稍后部分的单选按钮的程序例中分别显示了Windows、Motif和Metal三种不同风格的观感。v一般在应用程序的JFrame的构造方法中或在JAppl
16、et的init()方法中进行观感的设置。v【例9.2】设置观感。import javax.swing.*;import javax.swing.*;import java.awt.*;import java.awt.*;public class SetLAFpublic class SetLAF public static void setNativeLookAndFeel()public static void setNativeLookAndFeel()try try UIManager.setLookAndFeel(UIManager.UIManager.setLookAndFeel(U
17、IManager.getSystemLookAndFeelClassName();getSystemLookAndFeelClassName();catch(Exception e)catch(Exception e)System.out.println(System.out.println(设置设置native LAFnative LAF错误错误:+e);e);public static void setJavaLookAndFeel()public static void setJavaLookAndFeel()try try UIManager.setLookAndFeel(UIMana
18、ger.UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName();getCrossPlatformLookAndFeelClassName();catch(Exception e)catch(Exception e)System.out.println(System.out.println(设置设置Java LAFJava LAF错误错误:+:+e);e);public static void setMotifLookAndFeel()public static void setMotifLookAndF
19、eel()try try UIManager.setLookAndFeel(“UIManager.setLookAndFeel(“.sun.java.swing.plaf.motif.MotifLookAndFeel);motif.MotifLookAndFeel);catch(Exception e)catch(Exception e)System.out.println(System.out.println(设置设置Motif LAFMotif LAF错误错误:+:+e);e);v因因为为setLookAndFeelsetLookAndFeel()方法抛出异常,因此设置观感的代码应捕捉异常
20、。本例创建的类SetLAF可在以后的程序中设置观感时使用。v9.1.3事件处理v在一个GUI程序中,为了能够接收用户的输入、命令的按键和鼠标操作,程序系统首先应该能够识别这些操作并做出相应的响应。通常一个键盘和鼠标操作将引发一个系统预先定义好的事件,用户程序只要编写代码定义每个事件发生时程序应做出何种响应即可。这些代码会在它们对应的事件发生时由系统自动调用,这就是GUI程序中事件和事件响应的基本原理。v在Java语言中,除了键盘和鼠标操作,系统的状态改变也可以引发事件。v可能产生事件的组件称为事件源,不同事件源上发生的事件种类是不同的。若希望事件源上引发的事件被程序处理,需要将事件源注册给能够
21、处理该事件源上那种事件类型的监听器。监听器具有监听和处理某类事件的功能,它可以是包容事件源的容器,也可以是另外的对象。也就是说,事件源和事件处理是分开的,一般组件都不处理自己的事件,而将事件处理委托给外部的处理实体,这种事件处理模型称为授权处理模型。v事件的行为多种多样,由不同的监听器处理。编写事件处理程序首先应确定关注的事件属于何种监听器类型。v在AWT中,提供11种标准的监听器类型,见下表。监听器 适配器类 注册方法 ActionListener addActionListenerAdjustmentListener addAdjustmentListenerComponentListen
22、er ComponentAdapter addComponentListenerContainerListener ContainerAdapter addContainerListenerFocusListener FocusAdapter addFocusListenerItemListener addItemListenerKeyListener KeyAdapter addKeyListenerMouseListener MouseAdapter addMouseListenerMouseMotionListener MouseMotionAdapter addMouseMotionL
23、istenerTextListener addTextListenerWindowListener WindowAdapter addWindowListenerv在确定监听器类型后,要用事件源类的注册方法来注册一个监听器类的对象。这样,事件源产生的事件会传送给已注册的处理该类事件的监听器对象,该对象将自动调用相应的事件处理方法来处理该事件。具体的注册方法 是:用 监 听 器 类 的 对 象 作 为 参 数 调 用 事 件 源 本 身 的 addXxxListener()方法。该方法的参数是一个监听器类的对象,有多种形式。例如:(1)(1)分分离离的的监监听听器器类类,该该类类通通常常为为继继
24、承承相相应应事事件件适适配配器器类类的的子子类,类中包含了事件处理方法。参数是该类的一个对象。类,类中包含了事件处理方法。参数是该类的一个对象。(2)(2)实实现现监监听听器器接接口口,参参数数为为thisthis,表表示示本本对对象象就就是是一一个个监监听听器类的对象。在本类中包含事件处理方法。器类的对象。在本类中包含事件处理方法。(3)(3)有有名名内内部部类类,参参数数形形式式为为继继承承事事件件适适配配器器类类的的子子类类对对象象,在子类中包含事件处理方法。在子类中包含事件处理方法。(4)(4)匿匿名名内内部部类类,参参数数形形式式为为用用newnew开开始始的的一一个个无无名名的的类
25、类定定义义。其中包含事件处理方法。其中包含事件处理方法。9.2布局管理器v在容器中所有组件的布局(位置和大小)由布局管理器来 控 制。在 Java语 言 中 提 供 了 FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout等多种布局管理器。v每种容器都有自己缺省的布局管理器。缺省地,JPanel使用FlowLayout,而内容窗格 ContentPanev(JApplet、JDialog和 JFrame对 象 的 主 容 器)使 用BorderLayout。如果不希望使用缺省的布局管理器,则可使用所有容器的父类Container
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 图形 用户界面 设计 语言程序设计 电子 教案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内