Java图形用户界面设计.ppt
《Java图形用户界面设计.ppt》由会员分享,可在线阅读,更多相关《Java图形用户界面设计.ppt(141页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、9.1图形用户界面设计概述9.1.1 9.1.1 GUIGUI支持包和简单支持包和简单GUIGUI程序例程序例1.1.java.awtjava.awt包包 JavaJava语语言言在在java.awtjava.awt包包中中提提供供了了大大量量地地进进行行GUIGUI设设计计所所使使用用的的类类和和接接口口,包包括括绘绘制制图图形形、设设置置字字体体和和颜颜色色、控控制制组组件件、处处理理事事件件等等内内容容,AWTAWT是是JavaJava语言进行语言进行GUIGUI程序设计的基础。程序设计的基础。2.2.javax.swingjavax.swing包包SwingSwing包包是是JavaJ
2、ava基基础础类类库库(Java Java Foundation Foundation ClassesClasses,JFCJFC)的的一一部部分分。SwingSwing提提供供了了从从按按钮到可分拆面板和表格的所有组件。钮到可分拆面板和表格的所有组件。SwingSwing组组件件是是JavaJava语语言言提提供供的的第第二二代代GUIGUI设设计计工工具具包包,它它以以AWTAWT为为基基础础,在在AWTAWT内内容容的的基基础础上上新新增增或或改改进进了了一一些些GUIGUI组组件件,使使得得GUIGUI程程序序功功能能更更强强大大,设设计计更更容容易易、更更方方便便。SwingSwin
3、g是是开开发发新新组组件件的的项项目目代代码码名名,现现在在,这这个个名字常用来引用新组件和相关的名字常用来引用新组件和相关的APIAPI。AWTAWT组组件件和和对对应应的的SwingSwing组组件件,从从名名称称上上很很容容易易记记忆忆和和区区别别。例例如如,AWTAWT的的框框架架类类、面面板板类类、按按钮钮类类和和菜菜单单类类,被被命命名名为为FrameFrame、PanelPanel、ButtonButton和和MenuMenu,而而SwingSwing对对应应的的组组件件类类被被命命名名为为JFrameJFrame、JPanelJPanel、JButtonJButton和和JMe
4、nuJMenu。与与AWTAWT组组件件相相比比,SwingSwing组组件件的的名名前前多多一一个个 “J J”字字母母。另另 外外,AWT AWT 组组 件件 在在 java.awtjava.awt包包 中中,而而 SwingSwing组组 件件 在在javax.swingjavax.swing包中。包中。3.3.一个一个Java GUIJava GUI简单程序简单程序【例例9.19.1】一一个个简简单单的的Swing Swing GUIGUI应应用用程程序序。在在一一个个框框架架窗窗口口中中显显示示两两个个标标签签和和一一个个按按钮钮:上上面面的的标标签签显显示示一一串串固固定定的的文文
5、字字信信息息,选选择择按按钮钮后后在在下下面面的的标标签签上上显显示系统现在的时间。示系统现在的时间。l limport import import import java.awtjava.awtjava.awtjava.awt.*;.*;.*;.*;l limport import import import java.awt.eventjava.awt.eventjava.awt.eventjava.awt.event.*;.*;.*;.*;l limport import import import javax.swingjavax.swingjavax.swingjavax.swing
6、.*;.*;.*;.*;l limport java.util.*;import java.util.*;import java.util.*;import java.util.*;l l/继承继承继承继承JFrameJFrameJFrameJFrame类并实现类并实现类并实现类并实现ActionListenerActionListenerActionListenerActionListener接口接口接口接口l lpublic class public class public class public class SwingDemoSwingDemoSwingDemoSwingDemo e
7、xtends extends extends extends JFrameJFrameJFrameJFrame implements implements implements implementsl l ActionListenerActionListenerActionListenerActionListener l l JButtonJButtonJButtonJButton b1;/b1;/b1;/b1;/声明按钮对象声明按钮对象声明按钮对象声明按钮对象l l JLabelJLabelJLabelJLabel l1,l2;/l1,l2;/l1,l2;/l1,l2;/声明标签对象声明标签
8、对象声明标签对象声明标签对象l l SwingDemoSwingDemoSwingDemoSwingDemo()/()/()/()/定义构造方法定义构造方法定义构造方法定义构造方法l l super(Swing super(Swing super(Swing super(Swing应用程序的例应用程序的例应用程序的例应用程序的例);/);/);/);/调用父类的构造方法调用父类的构造方法调用父类的构造方法调用父类的构造方法l l l1=new l1=new l1=new l1=new JLabelJLabelJLabelJLabel(一个一个一个一个GUIGUIGUIGUI应用程序的例子应用程
9、序的例子应用程序的例子应用程序的例子 ,l l JLabel.CENTERJLabel.CENTERJLabel.CENTERJLabel.CENTER);/);/);/);/定义标签,文字居中定义标签,文字居中定义标签,文字居中定义标签,文字居中l l l2=new l2=new l2=new l2=new JLabelJLabelJLabelJLabel();/();/();/();/定义无文字标签定义无文字标签定义无文字标签定义无文字标签l l b1=new b1=new b1=new b1=new JButtonJButtonJButtonJButton(现在时间现在时间现在时间现在时
10、间 T);/T);/T);/T);/定义按钮定义按钮定义按钮定义按钮l l b1.setMnemonic(KeyEvent.VK_T);/b1.setMnemonic(KeyEvent.VK_T);/b1.setMnemonic(KeyEvent.VK_T);/b1.setMnemonic(KeyEvent.VK_T);/设置按钮的快捷键设置按钮的快捷键设置按钮的快捷键设置按钮的快捷键l l b1.setActionCommand(time);/b1.setActionCommand(time);/b1.setActionCommand(time);/b1.setActionCommand(t
11、ime);/设置控制名设置控制名设置控制名设置控制名l l b1.addActionListener(this);/b1.addActionListener(this);/b1.addActionListener(this);/b1.addActionListener(this);/注册按钮事件注册按钮事件注册按钮事件注册按钮事件l l add(l1,BorderLayout.NORTH);/add(l1,BorderLayout.NORTH);/add(l1,BorderLayout.NORTH);/add(l1,BorderLayout.NORTH);/添加标签添加标签添加标签添加标签l1
12、l1l1l1l l add(l2,BorderLayout.CENTER);/add(l2,BorderLayout.CENTER);/add(l2,BorderLayout.CENTER);/add(l2,BorderLayout.CENTER);/添加标签添加标签添加标签添加标签l2l2l2l2l l add(b1,BorderLayout.SOUTH);/add(b1,BorderLayout.SOUTH);/add(b1,BorderLayout.SOUTH);/add(b1,BorderLayout.SOUTH);/添加标签添加标签添加标签添加标签b1b1b1b1l l l l /对
13、按钮引发事件编程对按钮引发事件编程对按钮引发事件编程对按钮引发事件编程l l public void public void public void public void actionPerformed(ActionEventactionPerformed(ActionEventactionPerformed(ActionEventactionPerformed(ActionEvent e)e)e)e)l l /捕获按钮事件捕获按钮事件捕获按钮事件捕获按钮事件l l Calendar c1=Calendar c1=Calendar c1=Calendar c1=Calendar.getIns
14、tanceCalendar.getInstanceCalendar.getInstanceCalendar.getInstance();();();();l l /获取系统日期和事件获取系统日期和事件获取系统日期和事件获取系统日期和事件l l if(e.getActionCommand().equals(timeif(e.getActionCommand().equals(timeif(e.getActionCommand().equals(timeif(e.getActionCommand().equals(time)l l /判断是否为所需的按钮事件判断是否为所需的按钮事件判断是否为所需的
15、按钮事件判断是否为所需的按钮事件l l l2.setText(l2.setText(l2.setText(l2.setText(“现在时间是现在时间是现在时间是现在时间是”+l l c1.get(Calendar.HOUR_OF_DAY)c1.get(Calendar.HOUR_OF_DAY)c1.get(Calendar.HOUR_OF_DAY)c1.get(Calendar.HOUR_OF_DAY)l l +“时时时时”+c1.get(Calendar.MINUTE)+c1.get(Calendar.MINUTE)+c1.get(Calendar.MINUTE)+c1.get(Calend
16、ar.MINUTE)+“分分分分”););););l l /设置标签文字设置标签文字设置标签文字设置标签文字l l l2.setHorizontalAlignment(JLabel.CENTER);l2.setHorizontalAlignment(JLabel.CENTER);l2.setHorizontalAlignment(JLabel.CENTER);l2.setHorizontalAlignment(JLabel.CENTER);l l /设置标签标签文字居中对齐设置标签标签文字居中对齐设置标签标签文字居中对齐设置标签标签文字居中对齐l l l l else System.exit(
17、0);else System.exit(0);else System.exit(0);else System.exit(0);l l l l public static void main(String public static void main(String public static void main(String public static void main(String argsargsargsargs)/)/)/)/主方法主方法主方法主方法l l JFrame.setDefaultLookAndFeelDecorated(trueJFrame.setDefaultLookAn
18、dFeelDecorated(trueJFrame.setDefaultLookAndFeelDecorated(trueJFrame.setDefaultLookAndFeelDecorated(true););););l l /加此语句显示为运行结果图的右图加此语句显示为运行结果图的右图加此语句显示为运行结果图的右图加此语句显示为运行结果图的右图 l l JFrameJFrameJFrameJFrame frame=new frame=new frame=new frame=new SwingDemoSwingDemoSwingDemoSwingDemo();();();();l l /创
19、建创建创建创建JFrameJFrameJFrameJFrame对象,初始不可见对象,初始不可见对象,初始不可见对象,初始不可见l l frame.setDefaultCloseOperationframe.setDefaultCloseOperationframe.setDefaultCloseOperationframe.setDefaultCloseOperation(l l JFrame.EXIT_ON_CLOSEJFrame.EXIT_ON_CLOSEJFrame.EXIT_ON_CLOSEJFrame.EXIT_ON_CLOSE);/);/);/);/设置框架关闭按钮事件设置框架关闭
20、按钮事件设置框架关闭按钮事件设置框架关闭按钮事件l l frame.packframe.packframe.packframe.pack();/();/();/();/压缩框架的显示区域压缩框架的显示区域压缩框架的显示区域压缩框架的显示区域l l frame.setVisible(trueframe.setVisible(trueframe.setVisible(trueframe.setVisible(true);/);/);/);/显示框架主窗口显示框架主窗口显示框架主窗口显示框架主窗口l l l l 程序运行后显示的形式如下图程序运行后显示的形式如下图 。Java Swing GUIJa
21、va Swing GUI应用程序中的基本代码如下。应用程序中的基本代码如下。(1)(1)引入合适的包和类引入合适的包和类一一般般的的Swing Swing GUIGUI应应用用程程序序应应包包含含程程序序中中的的前前三三个个引引入入语语句句,它它们们分分别别表表示示引引入入awtawt包包、awtawt事事件件处处理理包和包和swingswing包。其他包按需引入。包。其他包按需引入。由由于于SwingSwing组组件件使使用用AWTAWT的的结结构构,包包括括AWTAWT的的事事件件驱驱动动模模式式,所所以以,使使用用swingswing组组件件的的程程序序一一般般需需要要使使用用awtaw
22、t包。包。(2)(2)使使用用缺缺省省的的观观感感或或设设置置自自己己的的观观感感(Look Look and and FeelFeel)(3)(3)设置一个顶层的容器设置一个顶层的容器(4)(4)根根据据需需要要,使使用用缺缺省省的的布布局局管管理理器器或或设设置置另另外外的布局管理器的布局管理器(5)(5)定义组件并将它们添加到容器定义组件并将它们添加到容器(6)(6)对组件或事件编码对组件或事件编码9.1.2 9.1.2 容器、组件、布局和观感容器、组件、布局和观感1.1.容器(容器(ContainerContainer)和组件(和组件(ComponentComponent)一一个个Ja
23、vaJava的的图图形形用用户户界界面面的的最最基基本本元元素素是是组组件件,组组件件是是可可以以以以图图形形化化的的方方式式显显示示在在屏屏幕幕上上并并能能与与用用户户进进行行交交互互的的对对象象,如如一一个个按按钮钮、一一个个文文本本框框等等。在在JavaJava语语言言中中,通通常常将将组组件件放放在在一一定定的的容容器器内内使使用用。容容器器实实际际上上是是一一种种具具有有容容纳纳其其他他组组件件和和容容器器的的功功能能的的组组件件。抽抽象象类类ContainerContainer是是所所有有容容器器的的父父类类,其其中中包包含含了了很很多多有有关关容容器器的的功功能能和和方方法法。而
24、而 类类 ContainerContainer又又 是是 JavaJava语语 言言 的的 组组 件件 类类ComponentComponent的子类。的子类。2.2.布局管理器(布局管理器(Layout ManagerLayout Manager)为为了了使使得得图图形形用用户户界界面面具具有有良良好好的的平平台台无无关关性性,在在JavaJava语语言言中中提提供供了了布布局局管管理理器器这这个个工工具具来来管管理理组组件件在在容容器器中中的的布布局局,而而不不使使用用直直接接设设置置组组件件位位置置和和大大小小的的方方式式。容容器器中中的的组组件件定定位位由由布布局局管管理理器器决决定定
25、。每每个个容容器器都都有有一一个个缺缺省省的的布布局局管管理理器器,当当容容器器需需要要对对某某个个组组件件进进行行定定位位或或判判断断其其大大小小尺尺寸寸时时,就就会会调调用用其其相相应应的的布布局局管管理理器器。但但也也可可以以不不用用缺缺省省的的布布局局管管理理器器,在在程程序中指定其新的布局管理器。序中指定其新的布局管理器。JavaJava平平台台提提供供多多种种布布局局管管理理器器,常常用用的的有有FlowLayoutFlowLayout、BorderLayoutBorderLayout、GridLayoutGridLayout、CardLayoutCardLayout、BoxLay
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 图形 用户界面 设计
限制150内