1.GUI概述
图形用户界面(Graphical User Interface,简称 GUI,又 称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
java作为一种面向对象的程序设计语言,它将图形界面设计相关的元素与成分都抽象为类和接口。现主要有java.awt包和javax.swing包
AWT(Abstract Window Toolkit)—抽象窗口工具
Java中用来生成图形用户界面的类库是 java.awt包,它是Java基本包中最大的一个, 定义了所有GUI组件类,以及其它用于构造图形界面的类。
AWT类库中的各种操作被定义成在一个并不存在的“抽象窗口”中进行,以实现跨平台特性,但其具体实现效果会有所不同(与本地对等组件相关联)。
Swing——轻量级组件
swing是为了解决awt存在的问题而新开发的包,它以awt为基础的。
Swing包含250多个类(有些是组件, 有些是支持类即继承自awt子类的类,组件的名字都以 J 开 头);
Swing GUI组件=java.awt包的各种GUI组件+新功能;
用轻量组件(没有本地对等组件)代替了AWT的重量组件(与本地对等组件相关联)。
Swing采用的MVC设计范式:
模型(Model)——用于存储定义该组件的数据(如:大小,颜色,布局....);
视图(View)——用模型中的数据生成该组件的可视化表示(即显示出该组件);
控制器(Controller)——响应用户对该组件的交互操作。
AWT和Swing之间的区别
1.AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT的Java程序,其运行速度比较慢。
2.AWT的控件在不同的平台可能表现不同,而Swing在所有平台表现一致。
3.AWT用的是重量组件(与本地对等组件相关联);Swing使用的是轻量组件(没有本地对等组件)。
4.AWT是抽象窗口组件工具包,是 java 最早的用于编写图形设计应用程序的开发包;swing是为了解决awt存在的问题而新开发的包,它以awt为基础的。
图形用户界面元素
组件
容器
用户自定义图形界面成分:(1) 绘制图形(2) 显示文字(3) 控制颜色(4) 显示图象(5) 实现动画效果
2.AWT与Swing组件简介
AWT和Swing容器
容器组件的主要作用是包容其他组件,并按照一定的方式组织排列他们。同一个容器中的所有组件 通常总是同时被显示或同时被隐藏。
所有容器组件都是Container类的子类。在Container类中定义了容器所需 要用到的属性及方法。
常用的方法有:setLayout( LayoutManager mgr) add (Component omp)
JAVA中的常用容器组件:面板 (JPanel)框架 (JFrame)
(1)面板(Panel、JPanel):
Panel属于无边框容器,无边框容器包括Panel和 Applet,其中Panel是Container的子类,Applet 是Panel的子类,它提供空间将其它的组件附在其上。。
使用Panel (JPanel)的好处就是可将相关的组件整合组织起来,让用户接口更为简洁清楚。
一 个 Frame ( JFrame ) 里 面 可 放 入 好 几 个 Panel(JPanel) 。可以在一个Panel(JPanel)上放入其它Panel(JPanel) 。
创建面板:
Panel() //用默认的布局管理器(FlowLayout)
Panel(LayoutManager layout)//用指定的布局 管理器(Layout)创建面板
(2)框架(Frame、JFrame)
Frame是独立于浏览器的可独立运行的主窗口,通常 用于开发桌面应用程序。 Frame拥有边界和标题栏设 置,大小、内容可以调整。 Frame是容器,里面需要 加入组件,也可以加入菜单,可以在上面绘图。
Frame的创建
Frame()——创建一个没有窗口标题的窗口框架
Frame(String)——创建一个指定窗口标题的窗口框架
注:框架是容器,就像面板一样,用户可以用add()方法将其他组件加到该框架容器中。该容器的缺省布局是BorderLayout。
Frame的主要方法
与Frame的相关的方法
(1)Swing中的 setDefaultCloseOperation()方法
功能:设置用户在窗体上发起 "close" 时默认执行的操作。
该方法的参数值:
EXIT_ON_CLOSE(在 JFrame 中定义):使用 System exit 方法 退出应用程序(仅在应用程序中使用) DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义)
HIDE_ON_CLOSE(在 WindowConstants 中定义)
DISPOSE_ON_CLOSE(在 WindowConstants 中定义)
(2)Swing中的 getContentPane()方法
由于在过去的J2SE版本中,组件(Component)不能直接添加到最高级(top level)的Swing容器,这些容器包括:JFrame, JApplet等。 因此需要调用JFrame的getContentPane()方法获得内容面板,然后该内容面板调用add()方法添加组件。但在J2SE5.0中,我们可以直接添加组件到最高级 的Swing容器,也可以直接在容器内设置布局管理和删除组件。
标签(Label、JLabel)
专门用于显示输出,它的功能为显示一行“只读文本”;常用于在屏幕上显示一些提示性,说明性的文字。
Label的构造方法及主要成员方法
Label():用来创建一个没有显示内容的标签
Label(String str):创建一个带初始字符串的标签
Label(String str,int alignment):创建一个带初始字符串及指定对齐方式的标签
void setAlignment(int alignment) :设置标签对齐方式。参数int代表的三种对齐方式 0= Label.LEFT 1= Label.CENTER 2= Label .RIGHT
JLabel的构造方法及类方法
void setAlignment(int alignment) 方法与Label的一致
JLabel的新增功能:可以提供带图标的标签,图标和文字的位置是可以控制的。
文本框(TextField、JTextField、JPasswordField)
单行文本框,用来接收用户从键盘上的输入,也可用来显示输出单行文本信息。
TextField的构造方法及成员方法(常用)
JTextField的构造方法及成员方法(常用)
与TextField的构造方法及成员方法一致只是构造方法名前以J开头
JPasswordField的构造方法及成员方法(常用)
JPasswordField类是继承JTextField类而来,是一个专门用来输入“密码”的单行文本框。即对用户输入的字符采用密文的形式进行显示,如“****”。
文本域(TextArea、JTextArea)
文本域允许用户编辑具有多行的文本, 可以用于输出信息,也可以用于接收信息。
注:当JTextArea的内容布满时不会产生滚 动条,而是自动加大文本区的大小。
TextArea的构造方法及成员方法(常用)
JTextArea的构造方法及成员方法(常用)
按钮(Button、JButton)
某类创建一个按钮。当 按下该按钮时,应用程序能执行某项动作。产生ActionEvent事件 (通过按下 该按钮触发)
Button的构造方法及成员方法(常用)
构造方法 | Button() | 创建一个没有标题的按钮 |
---|---|---|
Button(String label) | 创建一个有显示标题的按钮 | |
成员方法 | void addNotify() | 创建一个按钮对象的同位体(可以改变外观但不改变功能) |
getActionComand() | 返回激发动作事件按钮的标题 | |
String getLabel() | 返回按钮的标题 | |
void setLabel(String label) | 设置按钮上的标题 |
JButton的构造方法及成员方法(常用)