GUI编程
•Graphical User Interface(图形用户接口)。
•用图形的方式,来显示计算机操作的界面,这样更方便更直观。
需要用到的两个包:
java.awt:
Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。
javax.swing:
在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。
组件和容器
组件:组件就是对象
容器组件:是可以存储基本组件和容器组件的组件。
基本组件:是可以使用的组件,但是必须依赖容器。
Frame:
Frame是Window的子类,由Frame或其子类创建窗口
演示;
package demo01;
import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class Test1 {
public static void main(String[] args) {
Frame frame = new Frame();
frame.setBounds(200,300,500,500);
frame.setBackground(Color.BLACK);
frame.setVisible(true);
frame.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
}
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowDeactivated(WindowEvent e) {
}
});
}
关闭窗口时,窗口并不会消失,需要添加窗口监听,重写windowClosing方法
setbound设置窗口大小,所处位置
setBackground设置背景颜色
setVisible设置窗口可视
Panel
Panel拥有自己的布局管理器
可以往Frame中添加Panel
Panel都使用和Frame类似
标签
Label
在窗口界面中加入一些文字
Label label = new Label(“描述文字”);
frame.add(label);
按钮
Button
Button button = new Button(按钮标签);
布局管理器
1.FlowLayout(流式布局管理器,构造方法可指定对齐方式、水平垂直间距)
特点:从左到右的顺序排列,默认居中
2.Borderlayout(边界布局管理器)
特点:按照东南西北中的顺序排列, Frame默认的布局管理器
其中每个部分只可添加一个组件,若添加多个组件,则最后添加的组件会覆盖前面的。
3.GridLayout(网格布局管理器,构造方法可指定水平垂直间距)
特点:规则的矩阵 ,系统自带的计算器用的就是这个布局。

事件:每一个事件源都有自己特点有的对应事件和共性事件。(如:鼠标单击事件)
监听器:将可以触发某一事件的动作(不止一个动作)都已经封装到了监听器中。
以上三者,在java中都已经定义好了,
直接获取其对象来用就可以了。
我们要做的事情是,就是对产生的动作进行处理。
public static void main(String[] args) {
Frame frame = new Frame();
frame.setBounds(200,300,500,500);
frame.setBackground(Color.yellow);
frame.setVisible(true);
Button button = new Button("exit");
frame.add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
}
我们通过添加监听窗口,重写里面的方法,当按钮按下的时候,这个程序就会关闭
TextField(文本编辑框)
public static void main(String[] args) {
new TFFrame();
}
}
class TFFrame extends Frame
{
TFFrame()
{
TextField tf = new TextField();
add(tf);
tf.addActionListener(new TFActionListener());
pack();
setVisible(true);
}
}
class TFActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
TextField tf = (TextField)e.getSource();//getSource()拿到事件源,在一个类里面想访问另一个类的事件源对象
System.out.println(tf.getText());
tf.setText("");//回车后TextFiled为空
}