Java学习—Day07

自学Java-day07

Java GUI编程
一、创建窗口

1.导入java包:import java.awt.Frame; 调用Frame构造方法;
2.调用一个方法让窗体可见:f.show(); 此方法可行,但已过时,被setVisible()方法取代,方法的参数值:true 可见窗口;false 不可见窗口;
3.设置窗体大小:f.setSize(x,y); 单位默认像素;或者
导入java包:import java.awt.Dimension;
Dimension d=new Dimension(400,300);
f.setSize(d);
构造一个 Dimension,并将其初始化为指定宽度和高度。
4.设置窗体位置:f.setLocation(400,200);或者
导入java包:import java.awt.Point;
Point p=new Point(400,200);
f.setLocation( p );
在坐标空间中指定的 (x,y) 位置构造并初始化一个点。

5.f.setBounds(400,200,400,300);//一个方法完成窗体大小和位置的设置

6.设置窗体标题:f.setTitle(“HelloWorld”);或者调用Frame构造方法时,直接设置窗口标题:Frame(String title)即构造一个新的、最初不可见的、具有指定标题的 Frame 对象。
7.延迟函数:Thread.sleep(3000);//延迟三秒

try {
			Thread.sleep(3000);//延迟三秒
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
import java.awt.Frame;
public class FrameDeom {
	public static void main(String[] args) {
		//创建窗体
		Frame f=new Frame();
		//Frame f=new Frame("HelloWorld");
		//设置窗体标题
		f.setTitle("HelloWorld");
		//设置窗体大小
		f.setSize(400,300);//单位默认像素
		//		Dimension d=new Dimension(400,300);
		//		f.setSize(d);
		//设置窗体位置
		f.setLocation(400,200);
		//		Point p=new Point(400,200);
		//		f.setLocation(p);
		//调用一个方法,设置让窗体可见
		//f.show();//划横线表示过时的
		f.setVisible(true);//true 可见窗口,false 不可见
		//System.out.println("HelloWorld");
	}
}

在这里插入图片描述

二、关闭窗口

事件监听机制:
A:事件源 事件发生的地方
B:事件 要发生的事情
C:事件处理 针对发生的事情做出的处理方案
D:事件监听 把事件源和事件关联起来

举例:人受伤事件

事件源:人(具体对象)
	Person p1=new Person("小明");
	Person p2=new Person("小红");
事件:受伤
	interface 受伤接口{
		一拳();
		一脚();
		一板砖();
	}
事件处理:
	受伤处理类 implements 受伤接口{
		一拳(){System.out.println("鼻子流血,洗洗");}
		一脚(){System.out.println("晕倒,送到通风处");}
		一板砖(){System.out.println("头破血流,送到医院");}
	}
事件监听:
	p1.注册监听(受伤接口)	
import java.awt.Frame;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class FreamDemo01 {
	public static void main(String[] args) {
		//创建窗体对象
		Frame f=new Frame("窗体关闭");
		//设置窗体属性
		f.setBounds(400,200,400,300);
		//设置窗体可见
		f.setVisible(true);
		//关闭窗体
		//事件源:f
		//事件:对窗体的处理
		//事件处理:关闭窗体(System.exit(0);)
		//事件监听
		f.addWindowListener(new WindowListener() {
		  /*注册监听*/           /*窗体监听事件*/
			@Override
			public void windowOpened(WindowEvent e) {
				// TODO Auto-generated method stub
			}
			@Override
			public void windowIconified(WindowEvent e) {
				// TODO Auto-generated method stub
			}
			@Override
			public void windowDeiconified(WindowEvent e) {
				// TODO Auto-generated method stub
			}
			@Override
			public void windowDeactivated(WindowEvent e) {
				// TODO Auto-generated method stub
			}
			@Override
			//事件处理
			public void windowClosing(WindowEvent e) {
				// TODO Auto-generated method stub
				System.exit(0);
			}
			@Override
			public void windowClosed(WindowEvent e) {
				// TODO Auto-generated method stub
			}
			@Override
			public void windowActivated(WindowEvent e) {
				// TODO Auto-generated method stub
			}
		});
	}
}

说明:WindowListener是一个接口,而一个方法的参数是一个接口可以用以下两种方法实现这个接口:
1.自定义一个外部类实现此接口;
2.匿名内部类(此案例使用了);
案例中关闭窗口使用匿名内部类的方法,因为接口内的方法很多,要实现此接口必须要把接口内的方法都实现,如果接口内只有一个方法则用匿名内部类。
在此提供一种新的方法,用适配器类改进。

//用适配器类改进
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				// TODO Auto-generated method stub
				System.exit(0);
			}
		});
三、添加按钮

窗体布局:窗体中组建的排列方式
1.流式布局
从上至下、从左到右。
2.边界布局
按照东西南北中分布,如果只有一个按钮则会沾满整个屏幕。
3.网格布局
按照矩阵的布局来划分,每个区域只占一块。(计算器)
在这里插入图片描述
4.网格包布局
按照矩阵的布局来划分,一个按钮所占的区域不规则。
在这里插入图片描述
5.卡片布局
选择不同的按钮ABC,出现不同的画面。
在这里插入图片描述

package demo03;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.Button;
import java.awt.FlowLayout;
/*
 * 需求:把按钮添加到窗体,并对按钮添加一个点击事件
 * A:创建窗体对象
 * B:创建按钮对象
 * C:把按钮添加到窗体
 * D:窗体显示
 *
 */
public class FrameDemo01 {
	public static void main(String[] args) {
		//创建窗体
		Frame f=new Frame("添加按钮");
		//设置窗体属性
		f.setBounds(400,200,400,300);
		
		//设置布局为流式布局
		f.setLayout(new FlowLayout());
		
		//创建按钮对象
		Button bu=new Button("按钮");
		bu.setSize(20,10);
		
		//把按钮添加到窗体上
		f.add(bu);	
		//设置窗体可以关闭
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				// TODO Auto-generated method stub
				System.exit(0);
			}
		});
		bu.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.out.println("你再点试试");
			}
		});
		//让窗体可见
		f.setVisible(true);
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敷衍zgf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值