图形界面设计
6.0认识图形界面
6.1创建图形界面
6.2 AWT的事件模型
6.3 AWT的常用组件
6.4菜单组件
6.5图形设计
6.0认识图形界面
图形界面的组成:框架、对话框、面板、按钮、标签、
文本行、文本区、复选框、
选择框、列表框、滚动条、
画布、菜单
操作与事件
6.1创建图形界面
6.1.1抽象窗口工具集 AWT
6.1.2Java的图形类结构组件、容器、窗口与面板
6.1.3框架与面板 例 6.1
6.1.4按钮
6.1.5标签与文本行 例 6.2
例 6.1 框架窗口例 6.1 框架窗口
import java.awt.*;
public class Login1
{
public static void main(String arg[])
{
Frame f = new Frame("User Login"); //创建框架并设置标题
f.setSize(280,150); //框架大小
f.setBackground(Color.lightGray); //框架背景颜色
f.setVisible(true); //显示框架
}
}
例 6.2 用户登录窗口在用户登录窗口上添加组件
import java.awt.*;
public class Login2
{
public static void main(String arg[])
{
Frame f = new Frame("User Login");
f.setSize(280,150);
f.setBackground(Color.lightGray);
f.setLocation(300,240); //定位
f.setLayout(new FlowLayout()); //布局
Label t1 = new Label("userid"); //创建标签
TextField tf1 = new TextField("user1",20); //创建文本行
Label t2 = new Label("password");
TextField tf2 = new TextField(20); //创建 20列的文本行
Button b1 = new Button("Ok"); //创建按钮
Button b2 = new Button("Cancel");
f.add(t1); //添加到框架上
f.add(tf1); f.add(t2); f.add(tf2); f.add(b1); f.add(b2);
f.setVisible(true);
}
}
6.2 AWT的事件模型
事件与事件处理程序
6.2.2 AWTEvent事件类
6.2.3 事件类的接口
6.2.4 事件适配器
6.2.1 委托事件模型
6.2.1 委托事件模型
编程时:
1,利用相应组件的 注册事件监听者方法 注册事件监听者。
2,在已注册的事件监听者所属类中 实现相应事件接口中定义的事件处理方法 。
运行时:
1,由 AWT事件处理系统根据用户在组件上的操作产生相应的事件对象,交由事件监听者处理。
2,事件监听者调用相应的事件处理方法 对事件进行处理 。
例 6.3 计算器例 6.3 计算器的部分程序
import java.awt.*;
import java.awt.event.*;
public class Calc1 implements ActionListener
{
Frame f;
TextField tf1;
Button b1,b2,b3,b4;
public void display()
{
f = new Frame("Calculation");
f.setSize(260,150);
f.setLocation(320,240); //设置窗口初始位置
f.setBackground(Color.lightGray);
f.setLayout(new FlowLayout(FlowLayout.LEFT));
//改变布局且左对齐显示窗口并注册事件监听者
tf1 = new TextField(30);
tf1.setEditable(false); //只能显示,不允许编辑
f.add(tf1);
b1 = new Button("1");
b2 = new Button("2");
b3 = new Button("+");
b4 = new Button("C");
f.add(b1);
f.add(b2);
f.add(b3);
f.add(b4);
b1.addActionListener(this); //为按钮 b1注册事件监听者
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
f.addWindowListener(new WinClose()); //为框架 f注册事件监听者
f.setVisible(true);
}
实现 ActionListener接口中的方法
public void actionPerformed(ActionEvent e)
{ //实现 ActionListener接口中的方法,单击按钮时产生该事件
if (e.getSource()==b4) //获得产生事件的对象
tf1.setText("");
else //获取按钮标签,重新设置文本内容
tf1.setText(tf1.getText()+e.getActionCommand());
}
public static void main(String arg[])
{
(new Calc1()).display();
}
}
框架 f事件监听者所属类
class WinClose extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{ //覆盖 WindowAdapter类中同名方法,
//单击窗口关闭按钮时产生该事件
System.exit(0);
//结束程序运行,关闭窗口
}
}
6.3 AWT的常用组件
6.3.1 界面的布局
6.3.2 文本区
6.3.3 复选框
6.3.4 单选按钮
6.3.5 选择框
6.3.6 列表框
6.3.7 对话框
6.3.1 界面的布局
布局的基本概念
默认布局处理器
设置容器的布局
FlowLayout布局处理器
BorderLayout布局处理器
GirdLayout布局处理器
CardLayout布局处理器
其它布局处理器
MY BorderLayout
BorderLayout布局处理器
import java.awt.*;
public class Border1
{
public static void main(String args[])
{
Frame f = new Frame("MY BorderLayout");//默认布局是 BorderLayout
f.setSize(200,150);
Button w,n,c; //新建按钮组件
w = new Button("西 ");
n = new Button("北 ");
c = new Button("中 ");
f.add(new Button("东 "),BorderLayout.EAST);//在框架东部摆放按钮
f.add("South",new Button("南 "));
f.add(w,BorderLayout.WEST);
f.add(n,BorderLayout.NORTH);
f.add(c,BorderLayout.CENTER);
f.setVisible(true);
}
}
My GirdLayout
GirdLayout布局处理器
import java.awt.*;
public class Gird1
{
public static void main(String args[])
{
Frame f = new Frame("My GirdLayout");
f.setSize(200,150);
f.setLayout(new GridLayout(3,2));
//网格布局,左右分隔窗口
f.add(new Button("b1"));
f.add(new Button("b2"));
f.add(new Button("b3"));
f.add(new Button("b4"));
f.add(new Button("b5"));
f.setVisible(true);
}
}
MY CardLayout