* 创建图形化界面

 * 1.创建frame窗体

 * 2.对窗体进行基本设置

 *   比如大小、位置、布局

 * 3.定义组件

 * 4.将组件通过窗体的add方法添加到窗体

 * 5.让窗体显示,通过setVisible(true)

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class AwtDemo {

	public static void main(String[] args){
		Frame f=new Frame("我的窗口");//它默认的是边界布局
		f.setLocation(300, 300);//定点距左边的距离
		f.setSize(500, 400);
		f.setLayout(new FlowLayout());
		Button b=new Button("按钮");
		f.add(b);

		//f.addWindowListener(new MyWin());
		//我们也可以写一个匿名内部类
		f.addWindowListener(new 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("我被打开了");

			}
		});

		f.setVisible(true);

	}
}

/*
interface Lis{
	void close();
}
abstract class WinLis implements Lis{
//	复写接口中的方法,要用
//	某一个接口,必须复写
//	其中所有的方法,才能
//	建立对象,然后传递给函数,
//	用到abstract是因为这个里
//	面没有内容,如果调用的话
//	没有什么意义,所以抽象化了,
//	不让创建对象
	public void  close(){

	}
}

class MyWin implements WindowListener{

	//复写7个方法,可是只用了其中一种方法
	//其他动作都没有用到,可是却必须复与。

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

	}

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

	}

	@Override
	public void windowClosed(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 windowActivated(WindowEvent e) {
		// TODO Auto-generated method stub

	}

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

	}
	//
}
*/
//因为WindowListener的子类WindowAdapter已结实现了WindowListener接口
//并已经覆盖了其中所有的方法,那么我只要继承自Windowadapter覆盖需要的方法即可
//在图形化界面有两个包必须导入,java.awt.*;还有一个是java.awt.event.*;
class MyWin extends WindowAdapter{
	public void windowClosing(WindowEvent e){

		System.out.println("关闭窗体");
		System.exit(0);
	}
}



图形界面之鼠标键盘点击事件:

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MouseAndKeyEvent {

	private Frame f;
	private Button but;
	private TextField tf;
	MouseAndKeyEvent(){
		init();
	}
	public void init(){
		f=new Frame("我的窗口");
		f.setBounds(300,100,600,500);
		but=new Button("按钮");
		tf=new TextField(10);//表示长度为10
		f.add(tf);
		f.add(but);
		myEvent();
		f.setLayout(new FlowLayout());
		f.setVisible(true);

	}

	public void myEvent(){
		f.addWindowListener(new WindowAdapter() {

			public void windowClosing(WindowEvent e){
				System.exit(0);
			}

		});
		//在文本框里只能输入数字
		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();//使用此事件,以便不会按照默认的方式由产生此事件的源代码来处理此事件

			}

		});

		//but添加一个键盘监听
		but.addKeyListener(new KeyAdapter(){
			public void keyPressed(KeyEvent e){
				if(e.getKeyCode()==KeyEvent.VK_ENTER)
					System.exit(0);
				System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());
				//键盘的组合键
				if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
					System.out.println("Ctrl+Enter is run");

			}
		});

		but.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				System.out.println("action ok");

			}
		});

		but.addMouseListener(new MouseAdapter() {
			private int count=1;
			private int clickCount=1;
			public void mouseEntered(MouseEvent e){
				System.out.println("鼠标进入到该组件"+count++);
			}
			public void mouseClicked(MouseEvent e){
				System.out.println("点击动作"+clickCount++);
			}
			public void mouseClicked2(MouseEvent e){
				if(e.getClickCount()==2)
					System.out.println("双击动作"+clickCount++);
			}
		});
	}

	public static void main(String []args){
		new MouseAndKeyEvent();
	}
}

图形界面之列出指定目录内容:

import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;

public class MyWindowDemo {

	private Frame f;
	private TextField tf;
	private Button but;
	private Button okBut;
	private TextArea ta;
	private Dialog d;
	private Label lab;//把文字封装成label对象添加进去。

	MyWindowDemo(){
		init();
	}
	public void init(){
		f=new Frame("我的窗口");
		f.setBounds(300,100,600,500);
		f.setLayout(new FlowLayout());
		tf=new TextField(60);
		but=new Button("转到");

		d=new Dialog(f,"提示信息-self",true);//d本身是一个窗体,不能加到Frame中。
		d.setBounds(400,200,240,150);
		d.setLayout(new FlowLayout());
		lab=new Label();
		okBut=new Button("确定");
		d.add(lab);
		d.add(okBut);

		ta=new TextArea(25, 70);
		f.add(tf);
		f.add(but);
		f.add(ta);

		myEvent();

		f.setVisible(true);

	}

	public void myEvent(){
		okBut.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				d.setVisible(false);

			}
		});

		d.addWindowListener(new WindowAdapter(){

			public void windowClosing(WindowEvent e ){
				d.setVisible(false);
			}
		});
		//通过键盘对事件进行操作。
		tf.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e){
				if(e.getKeyCode()==KeyEvent.VK_ENTER)
					showDir();
			}
		});

		but.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				showDir();
				//tf.setText("");//清除textField的内容
			}
		});

		f.addWindowListener(new WindowAdapter(){

			public void windowClosing(WindowEvent e ){
				System.exit(0);
			}
		});
	}

	private void showDir(){
		String dirPath=tf.getText();
		//ta.setText(text);//把获取到文本放到TextArea
		//System.out.println(text);
		File dir=new File(dirPath);
		if(dir.exists()&&dir.isDirectory()){

			ta.setText("");//把之前路径找到的文件清除
			String[] names=dir.list();

			for(String name:names){
				//对于有很多文件的话,我们可以把它们存到String Builder中
				//append,表示将给定文本追加到文本区的当前文本。
				ta.append(name+"\n\r");//用到换行等
			}

		}
		else{
			String info="你输入的信息:"+dirPath+"是错误的,请重输";
			lab.setText(info);
			d.setVisible(true);
		}

	}

	public static void main(String [] args){
		new MyWindowDemo();
	}
}

Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单的更多相关文章

  1. 图形用户界面(GUI)事件监听机制——窗体事件Frame

    窗体事件.Button的使用 本事例给出一个窗体的定义方法,基本属性设置,给窗体添加退出按钮,让按钮具备退出的功能.熟悉监听器的使用 按钮就是事件源. 那么选择哪一个监听器呢? 通过关闭窗体事例了解到 ...

  2. JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件

    JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...

  3. java基础之IO流(二)之字符流

    java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...

  4. java基础之IO流(一)字节流

    java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...

  5. Java基础之IO流整理

    Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...

  6. java Gui编程 事件监听机制

    1.     GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式:   1. 命令交互方式    图书管理系统 ...

  7. 4.JAVA之GUI编程事件监听机制

    事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件. ...

  8. 创建图形用户界面GUI和事件监听机制的简单实现(java)

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

  9. GUI编程笔记(java)05:GUI事件监听机制原理和举例说明

    1.事件监听机制:       A:事件源          事件发生的地方       B:事件             就是要发生的事情       C:事件处理       就是针对发生的事情做 ...

  10. java 事件监听机制组成

    事件源(组件) 事件(Event) 监听器(Listener) 事件处理(引发事件后处理方式) 事件监听机制流程图 务必记牢: 确定事件源(容器或组件) 通过事件源对象的addXXXListener( ...

随机推荐

  1. [bzoj4822][Cqoi2017]老C的任务&[bzoj1935][Shoi2007]Tree 园丁的烦恼

    来自FallDream的博客,未经允许,请勿转载,谢谢. 老 C 是个程序员.     最近老 C 从老板那里接到了一个任务——给城市中的手机基站写个管理系统.作为经验丰富的程序员,老 C 轻松地完成 ...

  2. Win7删除文件夹提示找不到该项目无法删除

    在使用win7操作系统的过程中,有一些朋友会遇到这种情况,因为某种不明原因,硬盘里面某一个文件夹无法删除,表现为在删除的时候,系统提示找不到该项目,即找不到该文件夹,就像它变成了幽灵一样,看得到却摸不 ...

  3. vim的基本介绍

    vim四种模式: 1.正常模式(Normal-mode) 当我们打开vim时就会进入到正常模式,这个时候是不能编辑的,一般用于浏览文件,包括复制,删除一些文本操作.我们可以通过键盘的上下左右来进行光标 ...

  4. Delphi7数据库编程之TDataSet(转)

    TDataSet类由TBDEDataSet(BDE组件).TCustomADODataSet(ADO组件).TIBCustomDataSet(InterBase组件).TCustomSQLDataSe ...

  5. 阿里2019实习内推,五轮技术面+一轮HR面,Java岗面经

    在牛客网上获取到很多知识和信息,现在反馈一波,希望能对广大找实习的同学有所帮助. 个人情况:EE方向渣硕,二月末内推了阿里集团某部门Java岗,约三周完成了所有面试. 面经如下: 一面 (简历评估): ...

  6. js删除数组中的元素delete和splice的区别

    例如有一个数组是 :var textArr = ['a','b','c','d']; 这时我想删除这个数组中的b元素: 方法一:delete 删除数组 delete textArr[1]  结果为:  ...

  7. AngularJs开发——指令与控制器间的通信

    (原文:http://www.html5jscss.com/controller-between-directive.html) 指令与控制器之间通信,跟控制器间的通信.指令间通信也类似,也是下几种方 ...

  8. Why Helm? - 每天5分钟玩转 Docker 容器技术(160)

    本章我们将学习 Helm,Kubernetes 的包管理器. 每个成功的软件平台都有一个优秀的打包系统,比如 Debian.Ubuntu 的 apt,Redhat.Centos 的 yum.而 Hel ...

  9. Check the string CodeForces - 960A

    A has a string consisting of some number of lowercase English letters 'a'. He gives it to his friend ...

  10. Go 语言变量

    变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念.变量可以通过变量名访问. Go 语言变量名由字母.数字.下划线组成,其中首个字母不能为数字. 声明变量的一般形式是使用 var 关键字: ...