AWT 编程基础(一)

AWT用来编写图形化界面,它所创建的图形界面应用和所在的运行平台的风格一致,也就是说它是调用系统本地的图形界面来创建的。

通过AWT来建立一个图形化界面通常要容器(也就是我们常见到的窗口),布局管理器(主要用来控制各个组件的摆放位置),各个组件(按钮,文本框等等)及对事件的处理(点一下按钮的反应等等)


1.容器

AWT主要有两个容器:Window和Panel

           其中Window是可以独立存在的,panel则不能独立存在,它可以添加到(Window,panel.....中),我们通常使用AWT时就要首先创建一个可以独立存在的Window窗口,多数情况下,我们使用的是Window的子类Frame。我们来通过Frame创建一个窗口

import java.awt.*;    //导包
public class FreamDemo {
	public static void main(String[] args) {
		Frame f=new Frame("Test Fream");  //先new一个f窗口
		f.setBounds(30,30,250,200);//设置窗口的大小和位置
		f.setVisible(true);//让窗口可见,默认创建出来的是隐藏的
	}
}

            panel容器必须放在其他容器中,使用方法和Frame相仿。

import java.awt.*;    //导包
public class FreamDemo {
	public static void main(String[] args) {
		Frame f=new Frame("Test Fream");  //先new一个f窗口
		Panel p=new Panel(); //创建panel容器
		f.add(p);//将p容器加到Frame中
		f.setBounds(30,30,250,200);//设置窗口的大小和位置
		f.setVisible(true);//让窗口可见,默认创建出来的是隐藏的
	}
}

          ScrollPane是可以创建一个带滚动条的容器,他也不能独立存在

2.常用组件

     常用组件有Button(按钮),Label(标签类),TextArea(多行文本框),TextField(单行文本框)

       还有我们会常用到的Dialog(对话框)

        直接在实战中体验他们的作用

    

import java.awt.*;//日常导包
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class DialogDemo {
	
	private Frame f;
	private Button b;
	private Label l;
	private TextField tf;
	private TextArea ta;
	private Dialog d;
	
	public DialogDemo(){   //在构造器中直接运行建立窗口的函数
		init();
	}
	
	public void init() {
		f=new Frame("test");//创建新窗口
		f.setBounds(300,100,600,500);//设置大小位置
		f.setLayout(new FlowLayout()); //使用流式布局管理器
		b=new Button("test button");//创建新按钮
		l=new Label("test label");//创建新标签
		tf=new TextField("test TextField");//创建新文本域
		ta=new TextArea("test textarea");
		d=new Dialog(f,"test dialog",true);//创建对话框
		d.setBounds(300,400,200,100); //设置对话框的大小和位置
		d.setLayout(new FlowLayout());//使用流式布局管理器
		f.add(l);//将它们添加到窗口中
		f.add(tf);
		f.add(ta);
		f.add(b);
		myEvent();//事件处理
		f.setVisible(true);//使窗口可见
	}
	
	private void myEvent() {   //事件处理
		b.addActionListener(new ActionListener() {    //添加监听器
			public void actionPerformed(ActionEvent e) {
				d.setVisible(true);//当鼠标点击按钮后,弹出对话框
			}
		});
	}

	public static void main(String[] args) {
		new DialogDemo(); //创建一个窗口
	}
}

        解释,程序运行后会产生一个窗体,在窗体中有以上所提到的组件,点击按钮后,会弹出对话框


3.布局管理器

    上个程序我们就使用了布局管理器,所使用的管理器为流式管理器,我们常用的管理器有

    FlowLayout:组件从左向右以此排列,遇到边界会自动换行(默认是从中间开始)

    BorderLayout:将容器分为东南西北中五个区域,添加是可指定区域添加

    GridLayout:就像计算器的按键那样排列,规则网格式

    GridBagLayout:一个组件可以跨越多个网格

    等等........

    还可以自己给组件定位,设置绝对的位置(会丧失跨平台性)


4.事件处理

    当我们点击一个按钮或者作出某些外接设备的操作时,我们的程序需要对我们的这一动作进行反应,比如我的程序有一个按钮,这个按钮被一个监听器监听着,现在我们点击这个按钮,监听器触发,程序就会产生反应。

    首先将事件监听器注册在事件源上,当外部动作触发事件源后,时间源会将事件封装,传递给事件监听器,(这些都是虚拟机做的事),而我们就是要写,接下来事件监听器要干的事。(参考上个程序中点击按钮后,弹出对话框)

    事件有低级事件和高级事件(列举了些常用的)

                低级事件:WindowEvent:窗口事件,我们平时的窗口关闭,最小化等等

                                  KeyEvent:键盘事件,键盘的触发

                                   MouseEvent:鼠标事件,鼠标的点击

                 高级事件:ActionEvent:动作事件,按钮,菜单栏被单击时触发,上个程序中我们使用的就是这个事件

    当有事件后,我们要去处理事件,每个事件都有适配器,事件适配器可以让我们简化步骤,不用详细的写全部的操作步骤,只需要写我们所需要的功能即可,如WindowEvent的适配器为WindowAdapter

    举例一个常用的方法实现监听器(匿名内部类)

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ActioEventDemo {

	private Frame f;
	private Button b;
	public ActioEventDemo() {
		init();
	}
	public void init() {
		f=new Frame();
		b=new Button("Test");
		f.setBounds(300,400,200,300);
		f.add(b);
		myEvent();
		f.setVisible(true);
	}
	private void myEvent() {
		//这是一个匿名内部类
		b.addActionListener(new ActionListener() {//为按钮b注册一个事件监听器,点击b按钮时触发,进入该监听器
			
			@Override
			public void actionPerformed(ActionEvent e) {
				//点击按钮后要做的动作
			}
		});
	}
	
	public static void main(String[] args) {
		new ActioEventDemo();
	}
}


猜你喜欢

转载自blog.csdn.net/waectr/article/details/80760090
AWT
今日推荐