文档章节

Java GUI编程

李茂冉
 李茂冉
发布于 2016/05/15 14:47
字数 924
阅读 14
收藏 0
点赞 2
评论 0

##AWT

###awt(abstract window toolkit)

  • 包括了很多类和接口,用于java application的GUI编程
  • GUI的各种元素(如:窗口,按钮,文本框等)由java类来实现
  • 使用awt所涉及的类一般在java.awt包及其子包中
  • Container和Component是awt中的两个核心类

###Frame

frame是window的子类,由Frame或其子类创建的对象为一个窗体。

Frame的常用构造方法 Frame() Frame(String s) 创建标题栏为字符串s的窗口

setBounds(int x,int y,int width,int height); 设置窗体位置和大小,x,y是左上角坐标

setSize(int width,int height); 设置窗体的位置,x,yshirt左上角坐标

setLocation(int x,int y) 设置窗体的大小,width和height分别是宽度和高度

setViseble(boolean b) 设置是否可见

setTitle(String name) String getTitle()

setResizable(boolean b) 设置是否可以调整大小

##java窗口的事件

void windowActivated(WindowEvent e) 将 Window 设置为活动 Window 时调用。

void windowClosed(WindowEvent e) 因对窗口调用 dispose 而将其关闭时调用。

void windowClosing(WindowEvent e) 用户试图从窗口的系统菜单中关闭窗口时调用。

void windowDeactivated(WindowEvent e) 当 Window 不再是活动 Window 时调用。

void windowDeiconified(WindowEvent e) 窗口从最小化状态变为正常状态时调用。

void windowIconified(WindowEvent e) 窗口从正常状态变为最小化状态时调用。

void windowOpened(WindowEvent e) 窗口首次变为可见时调用。

##TextArea

setEditable(false); //只读属性

##匿名类关闭java窗口

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

public class FrameClose
{
	public static void main(String []args){
		new MyFrame("可以关闭窗口了!");
	}

}
class MyFrame extends Frame
{
	public MyFrame(String s){
		super(s);
		setLayout(null);
		setBounds(300,300,400,300);
		this.setBackground(new Color(204,204,255));
		setVisible(true);
		/*
		//用内部类实现
		this.addWindowListener(new MyWindowMonitor());
		*/
		//用局部类,即匿名类实现
		this.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				javax.swing.JOptionPane.showMessageDialog(null,"您把我关闭了!","提示",0);
				System.exit(0);
			}
		});

	}

	//内部类实现
	class MyWindowMonitor extends WindowAdapter
	{
		public void windowClosing(WindowEvent e)
		{
			setVisible(false);
			System.exit(0);
		}
	}
}

##文本框TextFiedld

  • TextField文本框输入
  • setEchoChar('');设置显示的内容为,即为*来屏蔽输入的内容

代码示例:


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

public class TextFieldTest{
	public static void main(String[]args){
		new TFFrame();	
	}	
}
class TFFrame extends Frame{
	public TFFrame(){
		TextField tf=new TextField();
		add(tf);
		tf.addActionListener(new Monitor());
		tf.setEchoChar('*');
		pack();
		setVisible(true);
	}	
}
class Monitor implements ActionListener {
	public void actionPerformed(ActionEvent e){
		TextField tf=(TextField)e.getSource();
		System.out.println(tf.getText());	
	}	
}

##事件

  • 使用java.awt.event.*;包的内容
  • 添加事件/绑定事件:addActionListener(//实现ActionListener接口的类的对象);
  • 实现ActionListener接口的public void actionPerformed(ActionEvent e){}方法

代码示例:

import java.awt.*;

public class EventTest{
	public static void main(String[]args){
		Frame f=new Frame("事件练习!");
		f.setBounds(500,500,500,500);
		f.setLayout(new FlowLayout());
		
		//添加文本框
		TextArea t=new TextArea();
		t.setBounds(100,100,300,100);
		t.setVisible(true);		
		f.add(t);
		//添加按钮
		Button b=new Button("Press Me!");
		MyEvent e=new MyEvent(t);
		
		b.addActionListener(e);
		
		f.add(b);
		f.setVisible(true);	
	}
} 

//事件
class MyEvent implements java.awt.event.ActionListener{
	private TextArea t;
	public MyEvent(){}
	public MyEvent(TextArea t){
		this.t=t;	
	}
	public void actionPerformed(java.awt.event.ActionEvent e){
		t.setText(t.getText()+"\n你点击了我,我痛啊!");
		System.out.println("你点击了我!");	
	}	
}

##如何区分同一事件的绑定

  • 加入两个button同时绑定了一个监听器,那么我们怎么区分它们?

代码示例:

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

public class MyFirstEventTest{
	public static void main(String[]args){
		Frame f=new Frame("事件练习");
		f.setBounds(500,500,500,500);
		//添加button
		Button b1=new Button("上一步");
		Button b2=new Button("下一步");
		//添加TextArea
		TextArea t=new TextArea();
		t.setBounds(100,100,200,200);
		f.add(t);
		Monitor m=new Monitor(t);
		b1.setActionCommand("Back!");
		b2.setActionCommand("Next!");
		b1.addActionListener(m);
		b2.addActionListener(m);
		f.add(b1);
		f.add(b2);
		f.setLayout(new FlowLayout());
		f.setVisible(true);		
	}	
}
class Monitor implements ActionListener{
	private TextArea t;
	public Monitor(TextArea t){
		this.t=t;
	}
	public void actionPerformed(ActionEvent e){
		t.setText(t.getText()+"\t"+e.getActionCommand()+"\n");
	}	
}

##如何关闭java显示的窗口

  • 调用并添加addWindowListener()方法!
  • 实现WindowAdapter的windowClosing方法

代码示例:

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

public class FrameClose
{
	public static void main(String []args){
		new MyFrame("可以关闭窗口了!");
	}

}
class MyFrame extends Frame
{
	public MyFrame(String s){
		super(s);
		setLayout(null);
		setBounds(300,300,400,300);
		this.setBackground(new Color(204,204,255));
		setVisible(true);
		this.addWindowListener(new MyWindowMonitor());

	}
	class MyWindowMonitor extends WindowAdapter
	{
		public void windowClosing(WindowEvent e)
		{
			setVisible(false);
			System.exit(0);
		}
	}
}

© 著作权归作者所有

共有 人打赏支持
李茂冉
粉丝 5
博文 103
码字总数 59256
作品 0
东城
高级程序员
Apache Groovy 2.5.0-rc-2 发布,包含 16 处修复和改进

Apache Groovy 2.5.0-rc-2 已发布。此版本包含 16 处错误修复/改进: Bug [GROOVY-6523] - Improve Documentation for in DefaultGroovyMethods.intersect(..) [GROOVY-7202] - Unable to re......

局长 ⋅ 05/07 ⋅ 0

Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区 ⋅ 05/09 ⋅ 0

Groovy 2.5.0 发布,JVM 动态脚本语言

Apache Groovy 2.5.0 已发布。此版本包含大量修复和依赖更新,并包含以下新特性: [GROOVY-6744] - Have the elvis operator (?:) support the Optional type in Java 8 [GROOVY-7089] - Bas......

淡漠悠然 ⋅ 05/31 ⋅ 1

Java就业变难了?你需要对自己有点信心

伴随着IT的火热,越来越多的人进入了IT领域,这在进一步推动着IT发展的同时也极大增加了就业压力。伴随着激烈的岗位竞争,越来越多的人开始感叹工作难找,越火的行业越是如此,Java自是首当其...

糖宝_d864 ⋅ 06/08 ⋅ 0

Java开发学习之三版本简介 java编程

  Java编程语言,在更迭迅速的互联网领域多年屹立不倒,足以得见Java这门语言旺盛的生命力,因此,会有很多想要进入互联网领域的朋友,想要学Java来转行开发。但是,所谓“隔行如隔山”,j...

老男孩Linux培训 ⋅ 06/05 ⋅ 0

学编程,学java还是大数据、android?平均月薪23k以上告诉你方向

学编程,学java还是大数据、android?有不少同学在纠结中,最近有不少初学者来问到,学习大数据,学习spark,公司主要使用那些语言编写,每听到这一个问题,起码还是很不错的,证明你已经开始...

编程南风 ⋅ 05/30 ⋅ 0

第五章 spring-connet之bean生命周期与bean监控

前言 javaBean javaBean是java公共组件的标准。起源于Java GUI的可视化编程实现的,所有的组件都需要支持拖拉,那么所有的组件的行为都是一致的。当拖拉组件的时候,就会创建一个改组件的对象...

鸟菜啊 ⋅ 04/27 ⋅ 0

百词斩Java程序员面试11个问题,你会几个?2018-04-10

近日,我们在w3cschool app开发者头条上,可以看到百词斩Java程序员面经。 在分享百词斩Java面经前,w3cschool特别给程序员小伙伴们带来一些Java学习干货: 0、学习Java必备的3大神器 如果你...

W3Cschool ⋅ 04/10 ⋅ 0

Java:大数据技术领域的一匹黑马

诞生于1991年的Java如今已经成为世界范围内应用最为广泛的编程语言之一。在今天的文章中,我们将共同了解Java所拥有的七大关键新特性,展望其如何在未来的超级计算、大数据以及物联网等领域继...

Java大数据处理 ⋅ 04/22 ⋅ 0

学习大数据需要Java基础吗?

近几年,很多人都听到过一个名词“大数据”也有一部分人选择学习了解大数据,那么大数据到底是什么,学习大数据需要有Java基础吗? 推荐一个大数据学习交流群 119599574每天晚上20:10都有一节...

大数据大咖 ⋅ 06/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

IDEA PermGen space内存溢出

解决方案: File -> Settings -> Build, Execution, Deployment / Build Tools / Maven / Runner下,找到VM Options选项,默认是空的,改为如下内容(或更大值)...

快乐的小火柴 ⋅ 13分钟前 ⋅ 0

前端常见跨域解决方案

什么是跨域? 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。 广义的跨域: 1.) 资源跳转: A链接、重定向、表单提交2.) 资源嵌入: <link>、<script>、<im...

临江仙卜算子 ⋅ 14分钟前 ⋅ 0

系统管理命令service

service命令用来控制系统服务的实用工具,例如启动、停止、重启和关闭系统服务,以及当前状态。当然也可以直接操作,例如/etc/init.d/mysqld restart等。 语法 service (选项)(参数) 选项...

Jpchina ⋅ 19分钟前 ⋅ 0

MySQL 联合索引的命中规则

为什么要用联合索引? 对于查询语句“SELECT T.* FROM T WHERE T.c1=1 AND T.c3=2”涉及到两列,这个时候我们一般采用一个联合索引(c1, c3);而不用两个单列索引,这是因为一条查询语句往往应...

hensemlee ⋅ 27分钟前 ⋅ 0

Spring 自动组件扫描

通常情况下都是在XML配置文件中手动声明Bean和组件的。不过Spring也可以自动扫描组件实例化Bean,这样就可以避免在XML文件中繁琐的Bean声明。 手动声明Bean: 这里不再啰嗦,就是简单地在XML...

霍淇滨 ⋅ 31分钟前 ⋅ 0

MapReduce简单需求分析-共同好友及查找互粉的情况

MapReduce的设计,最重要的是要找准key,然后制定一系列的数据处理流程。MapReduce的Map中,会把key相同的分配到同一个reduce中,对于key的选择,可以找到某个相同的因素。以下面的几个例子说...

Jason_typ ⋅ 33分钟前 ⋅ 0

springboot多数据源自动切换

SpringBoot多数据源切换,先上配置文件: 1.pom: <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20......

JackyRiver ⋅ 35分钟前 ⋅ 0

Boost库编译应用

版本:Boost 1.66.0 Windows库编译 官网指南:直接执行bootstrap.bat处理文件即可,可以我却遇到一堆的问题。 环境:Windows 10 + Visual Studio 2017 Boost编译出来库命名 boost库生成文件命...

水海云 ⋅ 40分钟前 ⋅ 0

解决Eclipse发布到Tomcat丢失依赖jar包的问题

如果jar文件是以外部依赖的形式导入的。Eclipse将web项目发布到Tomcat时,是不会自动发布这些依赖的。 可以通过Eclipse在项目上右击 - Propertics - Deployment Assembly,添加“Java Build ...

ArlenXu ⋅ 40分钟前 ⋅ 0

iview tree组件层级过多时可左右滚动

使用vue+iview的tree组件,iview官网iview的tree树形控件 问题描述:tree层级过多时左右不可滚动 问题解决:修改overflow属性值 .el-tree-node>.el-tree-node_children { overflow: vi...

YXMBetter ⋅ 42分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部