Java学习之图形界面编程AWT
2009-08-03 19:19
441 查看
AWT(Abstract Window Toolkit)
,抽象窗口工具包,
SUN
公司提供的用于图形界面编程
(GUI)
的类库。基本的
AWT
库处理用户界面元素的方法是把这些元素的创建和行为委托给每个目标平台上(
Windows
、
Unix
、
Macintosh
—苹果操作系统等)的本地
GUI
工具进行处理。
容器里组件的位置和大小是由布局管理器来决定的。容器对布局管理器的特定实例保持一个引用。当容器需要定位一个组件时,它将调用布局管理器来完成。当决定一个组件的大小时,也是如此。
在
AWT
中,给我们提供了五种布局管理器:
BorderLayout
FlowLayout
GridLayout
CardLayout
GridBagLayout
AWT
事件模型
Events(
事件
)
:描述发生了什么的对象。
Event source(
事件源
)
:事件的产生器。
Event handlers(
事件处理器
)
:接收事件对象、解释事件对象并处理用户交互的方法。
事件监听器:实现了监听器接口的类。一个监听器对象是一个实现了专门的监听器接口的类的实例。
----------------------------------------------------------Frame-----------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class FrameTest {
public
static void main(String args[]) throws IOException{
final
Frame f=new Frame();
/*
在构造
FileDialog
文件对话框的对象时,参数部分调用了
Frame
窗体的对象
f
在方法当中,所定义的匿名内部类要访问外部的局部变量或者本地变量,需要将变量声明为
final
*/
System.out.println("========================
设置窗体属性
========================");
f.setSize(500,
400);
f.setLocation(420,
250);
f.setBackground(Color.GRAY);
f.setLayout(new
BorderLayout(10,10));//
按照东南西北中
5
个方位排列,也是默认缺省的布局管理器
//f.setLayout(new
FlowLayout(FlowLayout.CENTER));//
流式布局管理器
//f.setLayout(new
GridLayout(3,3,10,10));//
网格状布局管理器
//f.setLayout(new
CardLayout(10,10));//
卡片布局管理器
//f.setLayout(new
GridBagLayout());//
System.out.println("========================
给窗体添加按钮
========================");
Button
b1=new Button("North");
Button
b2=new Button("South");
Button
b3=new Button("West");
Button
b4=new Button("East");
Button
b5=new Button("Center");
f.add(b1,"North");
f.add(b2,"South");
f.add(b3,"West");
f.add(b4,"East");
f.add(b5,"Center");
f.addWindowListener(new
WindowAdapter() {//
方法
1 WindowListener
事件,实现
Frame
窗体关闭操作
public void windowClosing(WindowEvent
e) {
System.exit(0);
//System
类的
exit
方法
终止当前正在运行的
Java
虚拟机
}
});
//f.addWindowListener(new
WindowListenerMethod2()); //
调用方法
2
的
addWindowListener
方法
//f.addWindowListener(new
WindowListenerMethod3()); //
调用方法
3
的
addWindowListener
方法
/*WindowListener
用于接收窗口事件的侦听器接口
,
需要处理窗口事件的类可以有
2
种方法
1.
实现
WindowListener
此接口
2.
扩展抽象类
WindowAdapter
,仅需要重写所需的方法
然后使用窗口的
addWindowListener
方法将从该类所创建的侦听器对象向该
Frame
注册
当通过打开、关闭、激活或停用、图
标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,
并将
WindowEvent
传递给该方法
*/
System.out.println("========================
给窗体添加菜单
========================");
MenuBar
mb=new MenuBar();//
菜单栏
Menu m1=new Menu("
文件
");//
菜单
Menu
m2=new Menu("
编辑
");
MenuItem mi1=new MenuItem("
新建
");//
菜单项
MenuItem
mi2=new MenuItem("
打开
");
MenuItem
mi3=new MenuItem("
保存
");
MenuItem
mi4=new MenuItem("
退出
");
MenuItem
mi5=new MenuItem("
复制
");
MenuItem
mi6=new MenuItem("
粘贴
");
m1.add(mi1);
m1.add(mi2);
m1.add(mi3);
m1.add(mi4);
m2.add(mi5);
m2.add(mi6);
mb.add(m1);
mb.add(m2);
f.setMenuBar(mb);//
把菜单栏添加到
Frame
窗体中
System.out.println("======================
添加只有一行的文本区
======================");
TextField
tf=new TextField(10);
f.add(tf,"North");
System.out.println("========================
添加文本域
========================");
final
TextArea ta=new TextArea();
f.add(ta);
System.out.println("=================
以下为操作事件的侦听器接口
=================");
mi1.addActionListener(new
ActionListener(){
//
新建
public
void actionPerformed(ActionEvent e){
ta.setText("
");
}
});
mi4.addActionListener(new
ActionListener(){
//
为
"
退出
"
菜单项添加退出事件
public
void actionPerformed(ActionEvent e){
System.exit(0);
}
});
f.setVisible(true);
}
}
class WindowListenerMethod2 implements
WindowListener {
//
方法
2
public
void windowActivated(WindowEvent e) {
}
public
void windowClosed(WindowEvent e) {
}
public
void windowClosing(WindowEvent e) {
System.exit(0);
}
public
void windowDeactivated(WindowEvent e) {
}
public
void windowDeiconified(WindowEvent e) {
}
public
void windowIconified(WindowEvent e) {
}
public
void windowOpened(WindowEvent e) {
}
}
class WindowListenerMethod3 extends
WindowAdapter
//
方法
3
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
--------------------------------------------------------Panel--------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
public class PanelTest extends Frame
{
/*Panel
是最简单的容器类
,
也可以成为面板
应用程序可以将其他组件放在
Panel
提供的空间内,这些组件包括其他
Panel
Panel
的默认布局管理器是
FlowLayout
布局管理器
将多个
panel
放置在一个
Frame
中,每个
panel
可以使用一种布局,将每种布局的
panel
用一个方法来控制
*Frame
和
Panel
都属于
java.awt
类
*WindowListener
和
ActionListener
属于
java.awt.event
事件类
*
* */
private Panel borderPanel;
private Panel flowPanel;
private Panel gridPanel;
private Panel cardPanel;
public PanelTest(String title)
{
super(title);
//
虽然
PanelTest
类已经继承
Frame
类,但设置标题还需要使用
super
调用父类的构造器设置标题
setSize(600,400);
//
定义
Frame
窗体的大小
setLocation(100,100);
//
定义
Frame
窗体从屏幕左上角起向右延伸的
xy
轴的位置
setBorderLayoutPanel();
//
初始化
4
个
Panel
setFlowLayoutPanel();
setGridLayoutPanel();
setCardLayoutPanel();
setLayout(new GridLayout(2,2));
//
定义整个
Frame
窗体使用网格状布局管理方式
add(borderPanel);
//
添加所有的
Panel
add(flowPanel);
add(gridPanel);
add(cardPanel);
addWindowListener(new WindowAdapter() {
//WindowListener
事件,实现
Frame
窗体关闭操作
public void windowClosing(WindowEvent e) {
System.exit(0);
//System
类的
exit
方法
终止当前正在运行的
Java
虚拟机
}
});
}
public void setBorderLayoutPanel()
{
borderPanel=new Panel();
borderPanel.setLayout(new BorderLayout());
Button btn1=new Button("North");
Button btn2=new Button("South");
Button btn3=new Button("West");
Button btn4=new Button("East");
Button btn5=new Button("Center");
borderPanel.add(btn1,BorderLayout.NORTH);
borderPanel.add(btn2,BorderLayout.SOUTH);
borderPanel.add(btn3,BorderLayout.WEST);
borderPanel.add(btn4,BorderLayout.EAST);
borderPanel.add(btn5,BorderLayout.CENTER);
}
public void setFlowLayoutPanel()
{
flowPanel=new Panel();
Button btn1=new Button("mybole");
btn1.addActionListener(new ActionListener() {
//
使用匿名内部类来实现
ActionListener
接口
/*ActionListener
用于接收操作事件的侦听器接口,对处理操作事件的类可以实现此接口
而使用该类创建的对象可使用组件的
addActionListener
方法向该组件注册
在发生操作事件时,调用该对象的
actionPerformed
方法。
*
*
*/
public void actionPerformed(ActionEvent e) {
Button
b=(Button)e.getSource();
if(b.getLabel()=="mybole"){
b.setLabel("weixin");
}
else {
b.setLabel("mybole");
}
}
});
Button btn2=new Button("winsun");
flowPanel.add(btn1);
flowPanel.add(btn2);
}
public void setGridLayoutPanel()
{
gridPanel=new Panel();
gridPanel.setLayout(new GridLayout(2,2));
Button btn1=new Button("Button1");
Button btn2=new Button("Button2");
Button btn3=new Button("Button3");
Button btn4=new Button("Button4");
gridPanel.add(btn1);
gridPanel.add(btn2);
gridPanel.add(btn3);
gridPanel.add(btn4);
}
public void setCardLayoutPanel()
{
final CardLayout cl=new CardLayout();
cardPanel=new Panel();
cardPanel.setLayout(cl);
Button btn1=new Button("
黑桃
A");
Button btn2=new Button("
红桃
K");
ActionListener al=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
cl.next(cardPanel);
//CardLayout
布局的
next()
方法
翻转到指定容器的下一张卡片
}
};
//
通过此事件
将完成在
CardLayout
布局的
Panel
中
按钮之间切换
(
翻转
)
的功能
btn1.addActionListener(al);
btn2.addActionListener(al);
cardPanel.add(btn1,"1");
cardPanel.add(btn2,"2");
}
public static void main(String[] args) throws HeadlessException
{
PanelTest pt = new PanelTest("http://www.mybole.com.cn");
pt.setVisible(true);
}
}
,抽象窗口工具包,
SUN
公司提供的用于图形界面编程
(GUI)
的类库。基本的
AWT
库处理用户界面元素的方法是把这些元素的创建和行为委托给每个目标平台上(
Windows
、
Unix
、
Macintosh
—苹果操作系统等)的本地
GUI
工具进行处理。
容器里组件的位置和大小是由布局管理器来决定的。容器对布局管理器的特定实例保持一个引用。当容器需要定位一个组件时,它将调用布局管理器来完成。当决定一个组件的大小时,也是如此。
在
AWT
中,给我们提供了五种布局管理器:
BorderLayout
FlowLayout
GridLayout
CardLayout
GridBagLayout
AWT
事件模型
Events(
事件
)
:描述发生了什么的对象。
Event source(
事件源
)
:事件的产生器。
Event handlers(
事件处理器
)
:接收事件对象、解释事件对象并处理用户交互的方法。
事件监听器:实现了监听器接口的类。一个监听器对象是一个实现了专门的监听器接口的类的实例。
----------------------------------------------------------Frame-----------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class FrameTest {
public
static void main(String args[]) throws IOException{
final
Frame f=new Frame();
/*
在构造
FileDialog
文件对话框的对象时,参数部分调用了
Frame
窗体的对象
f
在方法当中,所定义的匿名内部类要访问外部的局部变量或者本地变量,需要将变量声明为
final
*/
System.out.println("========================
设置窗体属性
========================");
f.setSize(500,
400);
f.setLocation(420,
250);
f.setBackground(Color.GRAY);
f.setLayout(new
BorderLayout(10,10));//
按照东南西北中
5
个方位排列,也是默认缺省的布局管理器
//f.setLayout(new
FlowLayout(FlowLayout.CENTER));//
流式布局管理器
//f.setLayout(new
GridLayout(3,3,10,10));//
网格状布局管理器
//f.setLayout(new
CardLayout(10,10));//
卡片布局管理器
//f.setLayout(new
GridBagLayout());//
System.out.println("========================
给窗体添加按钮
========================");
Button
b1=new Button("North");
Button
b2=new Button("South");
Button
b3=new Button("West");
Button
b4=new Button("East");
Button
b5=new Button("Center");
f.add(b1,"North");
f.add(b2,"South");
f.add(b3,"West");
f.add(b4,"East");
f.add(b5,"Center");
f.addWindowListener(new
WindowAdapter() {//
方法
1 WindowListener
事件,实现
Frame
窗体关闭操作
public void windowClosing(WindowEvent
e) {
System.exit(0);
//System
类的
exit
方法
终止当前正在运行的
Java
虚拟机
}
});
//f.addWindowListener(new
WindowListenerMethod2()); //
调用方法
2
的
addWindowListener
方法
//f.addWindowListener(new
WindowListenerMethod3()); //
调用方法
3
的
addWindowListener
方法
/*WindowListener
用于接收窗口事件的侦听器接口
,
需要处理窗口事件的类可以有
2
种方法
1.
实现
WindowListener
此接口
2.
扩展抽象类
WindowAdapter
,仅需要重写所需的方法
然后使用窗口的
addWindowListener
方法将从该类所创建的侦听器对象向该
Frame
注册
当通过打开、关闭、激活或停用、图
标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,
并将
WindowEvent
传递给该方法
*/
System.out.println("========================
给窗体添加菜单
========================");
MenuBar
mb=new MenuBar();//
菜单栏
Menu m1=new Menu("
文件
");//
菜单
Menu
m2=new Menu("
编辑
");
MenuItem mi1=new MenuItem("
新建
");//
菜单项
MenuItem
mi2=new MenuItem("
打开
");
MenuItem
mi3=new MenuItem("
保存
");
MenuItem
mi4=new MenuItem("
退出
");
MenuItem
mi5=new MenuItem("
复制
");
MenuItem
mi6=new MenuItem("
粘贴
");
m1.add(mi1);
m1.add(mi2);
m1.add(mi3);
m1.add(mi4);
m2.add(mi5);
m2.add(mi6);
mb.add(m1);
mb.add(m2);
f.setMenuBar(mb);//
把菜单栏添加到
Frame
窗体中
System.out.println("======================
添加只有一行的文本区
======================");
TextField
tf=new TextField(10);
f.add(tf,"North");
System.out.println("========================
添加文本域
========================");
final
TextArea ta=new TextArea();
f.add(ta);
System.out.println("=================
以下为操作事件的侦听器接口
=================");
mi1.addActionListener(new
ActionListener(){
//
新建
public
void actionPerformed(ActionEvent e){
ta.setText("
");
}
});
mi4.addActionListener(new
ActionListener(){
//
为
"
退出
"
菜单项添加退出事件
public
void actionPerformed(ActionEvent e){
System.exit(0);
}
});
f.setVisible(true);
}
}
class WindowListenerMethod2 implements
WindowListener {
//
方法
2
public
void windowActivated(WindowEvent e) {
}
public
void windowClosed(WindowEvent e) {
}
public
void windowClosing(WindowEvent e) {
System.exit(0);
}
public
void windowDeactivated(WindowEvent e) {
}
public
void windowDeiconified(WindowEvent e) {
}
public
void windowIconified(WindowEvent e) {
}
public
void windowOpened(WindowEvent e) {
}
}
class WindowListenerMethod3 extends
WindowAdapter
//
方法
3
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
--------------------------------------------------------Panel--------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
public class PanelTest extends Frame
{
/*Panel
是最简单的容器类
,
也可以成为面板
应用程序可以将其他组件放在
Panel
提供的空间内,这些组件包括其他
Panel
Panel
的默认布局管理器是
FlowLayout
布局管理器
将多个
panel
放置在一个
Frame
中,每个
panel
可以使用一种布局,将每种布局的
panel
用一个方法来控制
*Frame
和
Panel
都属于
java.awt
类
*WindowListener
和
ActionListener
属于
java.awt.event
事件类
*
* */
private Panel borderPanel;
private Panel flowPanel;
private Panel gridPanel;
private Panel cardPanel;
public PanelTest(String title)
{
super(title);
//
虽然
PanelTest
类已经继承
Frame
类,但设置标题还需要使用
super
调用父类的构造器设置标题
setSize(600,400);
//
定义
Frame
窗体的大小
setLocation(100,100);
//
定义
Frame
窗体从屏幕左上角起向右延伸的
xy
轴的位置
setBorderLayoutPanel();
//
初始化
4
个
Panel
setFlowLayoutPanel();
setGridLayoutPanel();
setCardLayoutPanel();
setLayout(new GridLayout(2,2));
//
定义整个
Frame
窗体使用网格状布局管理方式
add(borderPanel);
//
添加所有的
Panel
add(flowPanel);
add(gridPanel);
add(cardPanel);
addWindowListener(new WindowAdapter() {
//WindowListener
事件,实现
Frame
窗体关闭操作
public void windowClosing(WindowEvent e) {
System.exit(0);
//System
类的
exit
方法
终止当前正在运行的
Java
虚拟机
}
});
}
public void setBorderLayoutPanel()
{
borderPanel=new Panel();
borderPanel.setLayout(new BorderLayout());
Button btn1=new Button("North");
Button btn2=new Button("South");
Button btn3=new Button("West");
Button btn4=new Button("East");
Button btn5=new Button("Center");
borderPanel.add(btn1,BorderLayout.NORTH);
borderPanel.add(btn2,BorderLayout.SOUTH);
borderPanel.add(btn3,BorderLayout.WEST);
borderPanel.add(btn4,BorderLayout.EAST);
borderPanel.add(btn5,BorderLayout.CENTER);
}
public void setFlowLayoutPanel()
{
flowPanel=new Panel();
Button btn1=new Button("mybole");
btn1.addActionListener(new ActionListener() {
//
使用匿名内部类来实现
ActionListener
接口
/*ActionListener
用于接收操作事件的侦听器接口,对处理操作事件的类可以实现此接口
而使用该类创建的对象可使用组件的
addActionListener
方法向该组件注册
在发生操作事件时,调用该对象的
actionPerformed
方法。
*
*
*/
public void actionPerformed(ActionEvent e) {
Button
b=(Button)e.getSource();
if(b.getLabel()=="mybole"){
b.setLabel("weixin");
}
else {
b.setLabel("mybole");
}
}
});
Button btn2=new Button("winsun");
flowPanel.add(btn1);
flowPanel.add(btn2);
}
public void setGridLayoutPanel()
{
gridPanel=new Panel();
gridPanel.setLayout(new GridLayout(2,2));
Button btn1=new Button("Button1");
Button btn2=new Button("Button2");
Button btn3=new Button("Button3");
Button btn4=new Button("Button4");
gridPanel.add(btn1);
gridPanel.add(btn2);
gridPanel.add(btn3);
gridPanel.add(btn4);
}
public void setCardLayoutPanel()
{
final CardLayout cl=new CardLayout();
cardPanel=new Panel();
cardPanel.setLayout(cl);
Button btn1=new Button("
黑桃
A");
Button btn2=new Button("
红桃
K");
ActionListener al=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
cl.next(cardPanel);
//CardLayout
布局的
next()
方法
翻转到指定容器的下一张卡片
}
};
//
通过此事件
将完成在
CardLayout
布局的
Panel
中
按钮之间切换
(
翻转
)
的功能
btn1.addActionListener(al);
btn2.addActionListener(al);
cardPanel.add(btn1,"1");
cardPanel.add(btn2,"2");
}
public static void main(String[] args) throws HeadlessException
{
PanelTest pt = new PanelTest("http://www.mybole.com.cn");
pt.setVisible(true);
}
}
相关文章推荐
- 图形界面编程 Java学习 Lesson 8
- 图形界面编程 Java学习 Lesson 8
- Java基础班学习笔记(15)GUI图形界面编程
- Java学习之图形界面编程Swing
- JAVA学习笔记---简易计算器之图形界面
- JavaSwing图形界面编程之自定义类(一)
- java界面编程一 JComponent类学习
- 黑马程序员Java培训和Android培训:图形界面编程
- Java AWT组件开发和Swing界面编程
- JavaSwing图形界面编程之JPanel(一)
- 【学习笔记】做java awt界面时学到的东西
- JavaSwing图形界面编程之JApplet(一)
- Java 并发编程之图形界面应用程序及死锁问题
- JavaSwing图形界面编程之Line(一)
- JavaSwing图形界面编程之JTablePane(一)
- Java无难事(笔记)-Lesson8-图形界面编程
- JavaSwing图形界面编程之简易计算器(三)
- Java中的图形界面编程
- JavaSwing图形界面编程之JApplet(二)
- JavaSwing图形界面编程之JScrollBar(一)