JAVA学习第五十八- GUI

GUI

Graghical User Interface(图形用户接口)

java为GUI提供的对象都存在java.awt和java.swing包中

Java的GUI做的的确干不过C++等,不打算浪费过多的时间在这上面

一个简单的窗体演示

public static void main(String[] args){

		Frame f = new Frame("新窗体");
		f.setLocation(400, 200);//设置窗体的位置

		f.setSize(500, 400);//设置窗口大小
		//f.setBounds(400, 200, 500, 400);功能相当于上面两句
		f.setLayout(new FlowLayout());//设置 流式 布局
		Button bt = new Button("一个按钮");
		f.add(bt);
		f.setVisible(true);//显示窗口
	}

显示出窗体后发现无法关闭窗体,就用到了事件监听机制

其组成:事件源(组件)、事件(Event)、监听器(Listener)、事件处理(引发事件后处理方式)

 

	public static void main(String[] args){

		Frame f = new Frame("新窗体");
		f.setLocation(400, 200);//设置窗体的位置

		f.setSize(500, 400);//设置窗口大小
		//f.setBounds(400, 200, 500, 400);功能相当于上面两句
		f.setLayout(new FlowLayout());//设置 流式 布局
		Button bt = new Button("一个按钮");
		f.add(bt);

		//因为关不掉这一事件, 要注册一个监听器
		//窗体适配器类WindowAdapter,已经覆盖了所有方法,便捷于创建监听器
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});//添加窗体监听

		f.setVisible(true);//显示窗口

	}

用户对组件操作,就是一个事件,那么产生事件的组件就是事件源。

ActionListener演示:

public static void main(String[] args){

		Frame f = new Frame("新窗体");
		f.setLocation(400, 200);//设置窗体的位置

		f.setSize(500, 400);//设置窗口大小
		//f.setBounds(400, 200, 500, 400);功能相当于上面两句
		f.setLayout(new FlowLayout());//设置 流式 布局
		Button bt = new Button("一个按钮");
		f.add(bt);

		//因为关不掉这一事件, 要注册一个监听器
		//窗体适配器类WindowAdapter,已经覆盖了所有方法,便捷于创建监听器
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});//添加窗体监听

		//在按钮上添加一个监听事件:点击一下退出

		bt.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				//System.out.println("按了");
				System.exit(0);
			}
		});

		f.setVisible(true);//显示窗口

	}

键盘和鼠标监听事件

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
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 Main {

	private Frame f;
	private TextField tf;//文本框
	private Button bt;
	public Main(){
		init();
	}
	private void init(){
		f = new Frame("鼠标和键盘监听");
		bt = new Button("按钮");
		f.setBounds(400, 200, 500, 400);
		f.setLayout(new FlowLayout());
		tf = new TextField(40);//指定列数
		f.add(tf);
		f.add(bt);
		myEvent();
		f.setVisible(true);
	}

	private void myEvent(){
		//给文本框添加键盘监听
		tf.addKeyListener(new KeyAdapter() {

			@Override
			public void keyPressed(KeyEvent e) {//按下

	//System.out.println("key Pressed : "+e.getKeyChar()+" : "+e.getKeyCode()+" : "+e.getKeyText(e.getKeyCode()));//按下即打印
			/*	int code = e.getKeyCode();
				if(!(code>=KeyEvent.VK_0 && code <= KeyEvent.VK_9))//判断
					{
						System.out.println("必须数字");
						e.consume();//使用,不会按照默认的事件处理方式
					}
				if(e.getKeyCode()==KeyEvent.VK_ENTER){//按下回车
					System.out.println("enter.....");
				}
				*/
				if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){//按下Ctrl+回车
					System.out.println("Crtl enter.....");
				}
			}

		});
		//在窗体上添加退出监听器
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});

		//在按钮上添加鼠标监听器
		bt.addMouseListener(new MouseAdapter() {

			private int count = 1;//计数器

			public void mouseEntered(MouseEvent e) {//鼠标碰到即触发

				tf.setText("mouse enter : "+count++);//信息添加到文本框

			}
			public void mouseClicked(MouseEvent e) {//点击
				if(e.getClickCount()==2){//得到点击次数,双击
					System.out.println("mouseClicked Double click");
				}
				/*else if(e.getClickCount()==1){
					System.out.println("mouseClicked only click");
				}*/
				}
			});
		}
	public static void main(String[] args){
		new Main();

	}
}

未完

时间: 2024-10-22 12:00:53

JAVA学习第五十八- GUI的相关文章

JAVA学习笔记(五十八)- InetAddress类与URL

InetAddress类 /* * InetAddress类   */ public class Test07 {    public static void main(String[] args) throws UnknownHostException {        //获取本机的InetAddress实例          System.out.println("*******获取本机... www.songtaste.com/user/10258631/infowww.songtast

Java学习总结(十八)——MySQL数据库(4)MySQL数据库中的视图,函数,存储过程中常见循环

一.MySQL存储过程中常见的循环1.while循环:WHILE.....DO.....END WHILE例1:创建存储过程(求1+2+.......+num的和):创建成功,进行调用:显示结果:2.REPEAT循环: REPEAT.........UNTLL END REPEAT例2:创建存储过程:创建完成,调用存储过程:显示结果:3.LOOP循环:LOOP END LOOP 例3:创建存储过程:创建成功,调用存储过程:显示结果:二.MySQL中的视图1.概念:有结构(有行有列),但没有结果(

JAVA学习第五十四课 — IO流(八)打印流 &amp; 序列流

一.综合练习-文件清单列表 获取指定目录下,指定扩展名的文件(含子目录),并将这些文件的绝对路径写到一个文本文件中.也就是建立一个指定扩展名的文件列表 1.深度遍历 2.过滤器->容器 3.写入文件 import java.util.List; import java.io.*; import java.util.ArrayList; public class Main { public static void main(String[] args) throws IOException { F

JAVA学习第五十九课 — 网络编程概述

网络模型 OSI(Open System Interconnection)开放系统互连:參考模型 TCP/IP 网络通讯要素 IP地址 port号 传输协议 网络參考模型 七层OSI模型的基本概念要了解 网际层协议:包含:IP协议.ICMP协议.ARP协议.RARP协议. 传输层协议:TCP协议.UDP协议. 应用层协议:FTP.Telnet.SMTP.HTTP.RIP.NFS.DNS. 要真正实现网络通讯,首先要找到IP地址,IP地址是网络通讯的一大要素 IP地址:InetAddress 网络

JAVA学习第五十二课 — IO流(六)File对象

File类 用来给文件或者文件夹封装成对象 方便对文件与文件夹的属性信息进行操作 File对象可以作为参数传递给流的构造函数 一.构造函数和分隔符 public static void FileDemo() {//构造函数演示 //可以将一个已存在或不存在的文件或目录封装成File对象 File file = new File("d:\\a.txt"); File file2 = new File("d:","a.txt"); File file

JAVA学习第五十课 — IO流(四)转换流

一.键盘录入 System.out:标准输出设备,控制台 System.in:标准输入设备,键盘 输入演示 输入字符串遇到回车,打印,输入over,输入结束 PS:键盘的录入只读取一个字节,先将字节拼一个字符串,所以需要一个容器,再参与over的判断 import java.io.*; public class Main { public static void main(String[] args) throws IOException { InputStream in = System.in

JAVA学习第四十八课 — IO流(二):文件的复制 &amp; 缓冲区1

一.复制文本文件 将G盘的文本文件复制到D盘上 也就是 读取G盘中文本文件的数据,写入D盘中->连读带写 而剪切呢,就是连读带写后,删除原盘的文件 <span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public clas

JAVA学习笔记(四十八)- 适配器类 Adapter

适配器类 Adapter,对接口中的抽象方法进行空实现 import java.awt.Button; import java.awt.Frame; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEve

JAVA学习第五十五课 — IO流(九)文件切割合成器

文件切割器 private static final int SIZE = 1024 *1024; public static void splitFile(File file) throws IOException{ //用读取流关联文件(不确定文件格式) FileInputStream fis = new FileInputStream(file);//源是一个 byte[] by = new byte[SIZE];//定义1M的缓冲区 FileOutputStream fos = null