AWT包和事件监听

------- android培训java培训、期待与您交流! ---------- 

1 Conponent组件
在包java.awt.*;
在包java.Swing.*;是awt包的升级包
Conponent组件
--|Container容器     跟按钮和标签虽然是平级的,可以添加按钮标签等
----|Windows窗口
------|Frame窗体
------|DialogFrame对话框窗体
-------------|FileFrame文件窗体
----|Panel面板

--|Button按钮
--|Label标签
--|checkbox复选框
--|TextComponent文本组件
------|TextArea
------|TextField


1.1)container容器中的排放方式,就是布局
1.1.1)常见的布局管理器:
 FlowLayout(流式布局管理器)
从左到右的顺序排列,是 Panel面板默认的不加管理器
    第一个添加进来的默认居中,第二个添加进来第一个往左移,第二个在右边对齐

1.1.2) BorederLayout(边界布局管理器),是Frame默认的布局管理器
默认是把整个窗口添充,          东南西北中
 
1.1.3) GridLayout(网格布局管理器)   
         规则的矩阵

1.1.4) GardLayout(卡片布局管理器)
         选项卡

1.1.5) GridBagLayout(网格包布局管理器)
非规则的矩阵

3 创建图形化界面
  1创建窗体Frame
2对窗体进行基本设置
   比如大小,位置,布局
3定义组件
4将组件通过窗体的add方法添加到窗体中
5让窗体显示,通过setVisible(true)

/*
例子1:创建一个基本的Frame窗体
*/
import java.awt.*;
import java.awt.event.*;//监听器要导入import java.awt.event.*中的类

//因为WindowListener的子类WindowAdapter已经实现了WindowListener接口.并覆盖了其中的所有方法,那么我们只要继承Windowadapter覆盖我需要的方法即可
class MyWin extend	 WindowAdapter//定义一个监听器继承WindowAdapter
{
	public void windowClosing(WindowEvent e)//复写关闭方法
	{
		System.out.println("我要关闭啦");
		System.exit(0);
	}


	public void windowActivated(WindowEvent e)//复写活动窗口的方法
	{
		System.out.println("我活了");
	}


	public void windowOpened(WindowEvent e)//复写窗口打开方法
	{
		System.out.println("我被打开了啦");
	}
}
class FrameDemo
{
	public static void main(String[] args)
	{
		Frame f=new Frame("我是AWT");
		f.setSize(500,100);
		f.setLocation(300,200);
	
		Button b=new Button("我是一个按钮");

		f.add(b);
		f.setLayout(new FlowLayout());
	
		f.addWindowListener(new MyWin());//往窗体添加一个监听器
		f.setVisible(true);
	}
}

4 事件监听机制
例子:博物馆的密码锁监听器
     1事件源:就是awt包或者Swing包中的那些图形界面组件
     2事件:每一个事件源都有自己特有的对应事件和共性事件
     3监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器
     4事件处理

以上三者,在java中都已经定义好了,直接获取对象就可以了
我们要做的事情是,对产生的动作进行处理

import java.awt.*;
import java.awt.event.*;
/*
例子2:往按钮,添加一个监听器,鼠标监听器,文本框添加键盘监听器
同时把窗体和监听器代码分离
*/
class Frame
{
	//定义图形中所需组件的引用
	private Frame f;
	private Button b;
	private TextField tf;
	
	Frame()
	{
		init(); //调用方法
	}


	public void init()
	{
		f=new Frame("我是一个窗口");
		b=new Button("我是一个按钮");
		tf=new TextField(20); //20是列数
	
		f.setBounds(300,100,500,400);//对frame进行基本设置
		f.add(tf);
		f.add(b);
		myEvent();
	
		f.setVisible(true);
	}


	private void myEvent()
	{

		//向文本框添加一个监听器
		tf.addKeyListener(new KeyAdapter()
		{
		public void keyPressed(KeyEvent e)
		{
			int code=e.getKeyCode();
			if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))
			{
				System.out.println(code+"...是非法的");
				e.consume();//这个方法是符合条件的话不在文本框上输入,不能在文本框显示
			}
		}
		});


		//给按钮添加一个活动监听器,用匿名内部类实现
		b.addActionListener(new ActionListener()//没有适配器,因为只有一个方法,自己覆盖就行了
		{
			public void actionPerformed(ActionEvent e)
			{
				System.out.println("按钮干的");
				System.exit(0);
			}
		}
		);

		//给按钮添加一个鼠标监听器
		b.addMouseListener(new MouseAdapter()
		{
			private int count=1;
			private int clickCount=1;
			public void mouseEntered(MouseEvent e)
			{
				System.out.println("鼠标进入按钮组件"+count++);
			}

			//向按钮添加一个鼠标监听器,因为鼠标是共性事物,所以他的监听器定义在Comonpent组件中,只要是他的都可以调用这个方法
			public void mouseClicked(MouseEvent e)
			//e是一个事件对象,是事件源被外力触发后,把触发的事件打包成对象,返	回给监听器,由监听器根据事件来做出处理方式
			{
				if(e.getClickCount()==2)//获取鼠标点击次数
				System.out.println("点击动作"+clickCount++);
			}
			});

			//按钮添加一个键盘监听器,按钮是当前窗口的事件源(如果是活动),我一按键盘,那么安装在按钮上的监听器就被触发了,触发之后,按钮就把触发的事件封装成对象KeyEvent,返回给监听器,由监听器做出处理

			b.addKeyListener(new KeyAdapter()
			{
			public void keyPressed(KeyEvent e)
			{
				//getKeyChar获取键盘字母,getKeyCode获取字母对应的字节码

				//KeyEvent.getKeyText(e.getKeyCode());//获取键盘上对应键的文本
输出的例子:esc是27

				//if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)表示如果control键和enter同时按下
	
				if(e.getKeyCode()==KeyEvent.VK_ENTER)//键盘码如果是ENTER就退出窗口
					System.exit(0);
				System.out.println(e.getKeyChar()+"..."+e.getKeyCode());
			}
			}
			);
	
	}
}


class FrameDemo2
{
	public static void main(String[] args)	
	{
	new Frame();
	}

在文本框上输入目录,点击按钮转到,在文本区域上显示,目录下的文件

/*
例子3:在文本框上输入目录,点击按钮转到,在文本区域上显示,目录下的文件
*/
import java.io.*;
import java.awt.*;
import java.awt.event.*;


class FrameButton
{
	private Frame f;
	private Button but;
	private TextField tf;
	private TextArea ta;


	FrameButton()
	{
		init();
	}


	private void init()
	{
		f=new Frame("我是一个窗口");
		f.setBounds(300,200,500,400);
		f.setLayout(new FlowLayout());
	
		tf=new TextField(60);
		but=new Button("转到");
		ta=new TextArea(30,80);

		f.add(tf);
		f.add(but);
		f.add(ta);

		myEvent();
	
		f.setVisible(true);
	}


	private void myEvent()
	{
		//添加一个按钮的活动监听器
		but.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				String s=tf.getText();//得到文本框里的东西
				File file=new File(s);
				if(file.exists()&&file.isDirectory())
				{
					ta.setText("");//判断完之后把文本区域情况
					String[] names=file.list();

					for(String name:names)
					{
						//注意ta.setText(String)会把原来文本区域里的东西覆盖掉的
						//把循环到的字符串文件名,添加到文本区域,
						ta.append(name+"\r\n");
					}
				}
			  }
		});
	}
}


class FrameText
{
	public static void main(String[] args)
	{
	new FrameButton();
	}
}







 ------- android培训java培训、期待与您交流! ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值