Java基础-GUI(概述、布局、Frame、事件监听机制等事件演示)

GUI:Graphical User Interface 图形用户接口
Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中
CLI:Common line User Interface 命令行用户接口

Awt:Abstract Window ToolKit(抽象工具包),需要调用本地系统方法实现功能,属于重量级控件。
Swing:在Awt的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现,增强了移植性,属于轻量级控件。


Container:为容器,是一个特殊的组件,该组件可以通过add方法添加其他组件进来。
Swing继承关系图:



布局:容器中的组件排放方式
常见的布局管理器:
FlowLayout:    流式布局管理器,从左到右的顺序排列,Panel默认的布局管理器
BorderLayout:   边界布局管理器,中东南西北,Frame默认的布局管理器
GridLayout:     网格布局管理器,规则的矩阵
CardLayout:    卡片布局管理器,选项卡

GridBagLayout:    网格包布局管理器,非规则的矩阵


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

代码:

import java.awt.*;

public class code
{
	public static void main(String[] args) {
		Frame f = new Frame("my awt");
		f.setSize(500,400);
		f.setLocation(300, 200);
		f.setLayout(new FlowLayout());
		
		Button b = new Button("我是一个按钮");
		
		f.add(b);
		f.setVisible(true);
	}
}

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

事件源、事件、监听器,以上三者在Java中都已经定义好了,直接获取其对象用就可以。
我们要做的事情是对产生的动作进行处理。


窗口事件演示  代码:

import java.awt.*;
import java.awt.event.*;

public class code
{
	public static void main(String[] args) {
		Frame f = new Frame("my awt");
		f.setSize(500,400);//大小
		f.setLocation(300, 200);//桌面位置
		f.setLayout(new FlowLayout());
		
		Button b = new Button("我是一个按钮");
		
		f.add(b);
		
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.out.println("关闭");
				System.exit(0);
			}
			public void windowActivated(WindowEvent e) {
				System.out.println("开启");
			}
		});//匿名内部类
		f.setVisible(true);//显示
	}
}

鼠标事件演示  代码:

import java.awt.*;
import java.awt.event.*;

public class code
{
	public static void main(String[] args) {
		new Mouse();
	}
}

class Mouse
{
	private Frame f;
	private Button but;
	Mouse(){
		init();
	}
	public void init(){
		f = new Frame("my frame");
		f.setBounds(300,100,600,500);
		f.setLayout(new FlowLayout());
		but = new Button("my button");
		f.add(but);
		myEvent();
		f.setVisible(true);
	}
	private void myEvent() {
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		but.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.out.println("action ok");
				
			}
		});
		
		but.addMouseListener(new MouseAdapter() {
			private int num = 1;
			private int num1 = 1;
			public void mouseEntered(MouseEvent e) {
				System.out.println("鼠标进入到改组件"+num++);
			}
			public void mouseClicked(MouseEvent e) {
				if(e.getClickCount()==2)
					System.out.println("点击动作"+num1++);
			}
		});
	}
}

键盘事件演示  代码:

import java.awt.*;
import java.awt.event.*;

public class code
{
	public static void main(String[] args) {
		new Mouse();
	}
}

class Mouse
{
	private Frame f;
	private Button but;
	private TextField tf;
	Mouse(){
		init();
	}
	public void init(){
		f = new Frame("my frame");
		f.setBounds(300,100,600,500);
		f.setLayout(new FlowLayout());
		tf = new TextField(20);//文本框
		but = new Button("my button");
		
		f.add(tf);
		f.add(but);
		myEvent();
		f.setVisible(true);
	}
	private void myEvent() {
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		tf.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				int count = e.getKeyCode();
				if(count>=KeyEvent.VK_0 && count <=KeyEvent.VK_9) {
					System.out.println(count+"--是非法的");
					e.consume();
				}	
			}
		});
		
		//给按钮添加一个键盘监听
		but.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				if(e.getKeyCode()==KeyEvent.VK_ENTER) {
					System.exit(0);
				}
			}
		});
		
		but.addMouseListener(new MouseAdapter() {
			private int num = 1;
			private int num1 = 1;
			public void mouseEntered(MouseEvent e) {
				System.out.println("鼠标进入到改组件"+num++);
			}
			public void mouseClicked(MouseEvent e) {
				if(e.getClickCount()==2)
					System.out.println("点击动作"+num1++);
			}
		});
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值