文档章节

Java GUI编程

李茂冉
 李茂冉
发布于 2016/05/15 14:47
字数 924
阅读 14
收藏 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
东城
高级程序员
一句话讲清楚什么是JavaEE

Java技术不仅是一门编程语言而且是一个平台。同时Java语言是一门有着特定语法和风格的高级的面向对象的语言,Java平台是Java语言编写的特定应用程序运行的环境。Java平台有很多种,很多的Jav...

qq58edeba279279
06/26
0
0
一句话讲清楚什么是JavaEE

摘要: Java技术不仅是一门编程语言而且是一个平台。同时Java语言是一门有着特定语法和风格的高级的面向对象的语言,Java平台是Java语言编写的特定应用程序运行的环境。Java平台有很多种,很多...

qq592fbb5b34ad7
07/02
0
0
亮剑JVM的9款编程语言杀手开发利器重磅推荐

随着各种各样的编程语言铺地盖地向我们涌来,软件世界似乎变得有点疯狂了。JVM的帝国在不断地壮大,它已经不满足于只作为Java语言的运行平台。它勇敢地将自己的触角伸向了JRuby,Groovy等等,...

ndjys
2012/03/19
0
0
从java程序员到CTO的成长路线图

很多新人不知道从事java开发,具体的发展路径是怎么样的,甚至很多人都不能区分程序猿和攻城师的区别。包括不少小白,从事java开发都半年,甚至1年了,对职业发展还没有清晰的认证。这非常不...

6pker
2013/10/24
0
2
JMX学习以及在log4j中的应用

前言 JMX即Java Managemen Extensions,是一个为应用程序植入管理功能的框架。一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。 常常在编程的过程中...

buglife
2015/01/06
0
15

没有更多内容

加载失败,请刷新页面

加载更多

java序列化(七) - fst 序列化

java序列化(七) - fst 序列化 github https://github.com/RuedigerMoeller/fast-serialization 实践 https://gitee.com/mengzhang6/serializable-demo.git maven依赖 <!-- https://mvnrepo......

晨猫
11分钟前
2
0
智力问题汇总

南京新建地铁线路,给你2块钱,测出来需要配置多少辆车? 参考答案:根据地铁有固定时间间隔,坐一圈该线路,推算出需要多少辆。 一共50张卡片,上面写着1--50 ,50个数字,藏起来一张,打乱...

职业搬砖工程师
15分钟前
1
0
ZFS-自我恢复RAID

ZFS-自我恢复RAID 这个给了我一个简单而又强大的理由,让我立马为之折服,ZFS可以自动的检测发生的错误,而且,可以自我修复这些错误。假设有一个时刻,磁盘阵列中的数据是错误的,不管是什么...

openthings
24分钟前
2
0
从Hash到一致性Hash原理(深度好文)

要讲一致性Hash原理,先从一般性Hash讲起,其实Hash的本质就是一个长度可变的数组,那为什么Hash的时间复杂度是O(1),而其他类型的数据结构查找都是要遍历来,遍历去,即便是树,二叉树,也是要经过几...

算法之名
37分钟前
12
0
软件测试工具书籍与面试题汇总下载(持续更新)

简介 本文是https://github.com/china-testing/python-api-tesing/blob/master/books.md 的节选。 欢迎转载,转载请附带此简介,谢谢! 试题 软件测试综合面试题(高级测试)-试题.pdf 软件测试...

python测试开发人工智能安全
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部