黑马程序员_java基础之GUI

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

1.Component

界面上 显示的所有的组件,可在屏幕上显示,并可与用户进行交互。典型图形用户界面中的按钮、复选框和滚动条
  Button 按钮
  Canvas 画布
  Checkbox 复选框
  Label 标签,用来在页面显示文本信息,不能够编辑
  List 可滚动的列表
  Scrollbar 滚动条
  JComponent
  JTable 表格
  TextComponent
  TextField 单行文本框
  TextArea 多行文本框(文本域)
  Container 容器
    Window 窗口
  Frame 窗体
  Dialog 对话框
  FileDialog 文件对话框
  Panel 面板

2.Frame 

是带有标题和边框的顶层窗口
构造方法:
public Frame() 构造一个最初不可见的 Frame 新实例()。Frame 的标题为空。
方法:
public void show() 方法 显示窗口, 过时了
public void setVisible(boolean b)根据参数 b 的值显示或隐藏此组件。
public void setTitle(String title) 设置标题
public void setSize(int width, int height) 设置窗口大小
  public void setSize(Dimension d) 设置窗口大小,传一个尺寸对象
Dimension 类封装单个对象中组件的宽度和高度
public void setLocation(int x, int y) 设置窗口位置
  public void setLocation(Point p)设置窗口位置,传一个坐标点对象

3.事件监听机制

事件源: 可能要发生时间的对象
事件源: 窗体
事件: 能够发生哪些事情
事件 : 点击关闭窗口
事件处理:当事件发生后,对应的处理方式
事件处理: 退出程序
事件监听:监听事件源,是否有事件发生
事件监听: 窗体监听器

4.适配器设计模式

事件源: 银行

事件 :
interface 事件接口 {
存钱
取钱
抢劫
}

事件处理适配器类:
class 事件处理适配器类 implements 事件接口 {
存钱() {
}
取钱() {
}
抢劫() {
}
}

事件处理具体类:
class 事件处理具体类 extends 事件处理适配器类 {
//只需要重写 指定的方法即可
}

事件监听: 一个方法,用来给事件源添加监听的
import java.awt.Frame;
import java.awt.event.WindowListener;

/*
 * 测试
 * 
 	事件源:  窗体
	事件    :  点击关闭窗口
	事件处理: 退出程序
	事件监听: 窗体监听器
 */
public class FrameDemo {
	public static void main(String[] args) {
		//创建窗体
		//事件源:  窗体, 银行
		Frame frame = new Frame();
		//设置标题
		frame.setTitle("人来银行");
		
		//设置尺寸大小
		frame.setSize(500, 500);
		
		//设置位置 
		frame.setLocation(400, 100);
		
		//事件监听: 窗口监听器   摄像头,保安
		//public synchronized void addWindowListener(WindowListener l)
		//new MyWindowListener();//创建一个保安
		//创建一个保安,来监听银行要发生的事件
		frame.addWindowListener(new MyWindowListener());
		
		//显示
		frame.setVisible(true);
	}
}
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
 //保安类
public class MyWindowListener implements WindowListener {

	@Override
	public void windowOpened(WindowEvent e) {
		// TODO Auto-generated method stub

	}

	//点击关闭按钮,执行的操作方法
	@Override
	public void windowClosing(WindowEvent e) {
		// 退出程序, 结束JVM
		System.exit(0);
	}

	@Override
	public void windowClosed(WindowEvent e) {

	}

	@Override
	public void windowIconified(WindowEvent e) {

	}

	@Override
	public void windowDeiconified(WindowEvent e) {

	}

	@Override
	public void windowActivated(WindowEvent e) {
	}

	@Override
	public void windowDeactivated(WindowEvent e) {

	}
}

5.复杂菜单设计

import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

/*
 * 复杂的菜单
 * 
 * 	文件
 * 	   打开记事本
 * 	   修改标题
 * 		 我要学好Java
 * 		 我要天天敲代码
 * 		 恢复标题
 * 	   退出
 * 
 */
public class MenuDemo2 {
	public static void main(String[] args) {
		//创建窗体
		final Frame frame = new Frame("复杂的菜单");
		//窗体的标题
		final String title = frame.getTitle();
		
		//设置窗体的大小与位置
		frame.setBounds(200, 200, 300, 300);
		//-------------------------------------------
		//创建菜单栏
		MenuBar bar = new MenuBar();
		//创建菜单
		Menu fileMenu = new Menu("文件");//文件菜单
		Menu titleMenu = new Menu("修改标题");//标题菜单
		
		//创建菜单项
		MenuItem mi1 = new MenuItem("打开记事本");
		final MenuItem mi2 = new MenuItem("我要学好Java");
		final MenuItem mi3 = new MenuItem("我要天天敲代码");
		final MenuItem mi4 = new MenuItem("恢复标题");
		MenuItem mi5 = new MenuItem("退出");
		
		//---------
		//把打开记事本 添加到文件菜单
		fileMenu.add(mi1);
		
		//把mi2,mi3,mi4 添加到  标题菜单 中
		titleMenu.add(mi2);
		titleMenu.add(mi3);
		titleMenu.add(mi4);
		//把标题菜单 添加到 文件菜单中
		fileMenu.add(titleMenu);
		
		//把退出 添加到文件菜单
		fileMenu.add(mi5);
		
		
		//把文件菜单添加到菜单栏
		bar.add(fileMenu);
		//把菜单栏添加到窗体中
		frame.setMenuBar(bar);
		//-------------------------------------------
		//为菜单项 添加动作监听
		//打开记事本
		mi1.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				Runtime r  = Runtime.getRuntime();
				try {
					r.exec("notepad");
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		});
		
		//"我要学好Java"
		mi2.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				frame.setTitle(mi2.getLabel());
				
			}
		});
		
		//我要天天敲代码
		mi3.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				frame.setTitle(mi3.getLabel());
			}
		});
		
		//恢复标题
		mi4.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				//frame.setTitle(mi4.getLabel());
				frame.setTitle(title);
			}
		});
		
		
		//退出
		mi5.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		
		
		//-------------------------------------------
		//显示
		frame.setVisible(true);
	}
}



1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值