文档章节

Java GUI编程

李茂冉
 李茂冉
发布于 2016/05/15 14:47
字数 924
阅读 30
收藏 0

码上生花,ECharts 作品展示赛正式启动!>>>

##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);
		}
	}
}

© 著作权归作者所有

上一篇: java连接数据库
下一篇: Java网络通信示例
李茂冉
粉丝 6
博文 103
码字总数 59256
作品 0
东城
高级程序员
私信 提问
加载中
请先登录后再评论。
Java基础入门 传智播客pdf

下载地址:网盘下载 内容简介   《Java基础入门》从初学者的角度详细讲解了Java开发中重点用到的多种技术。全书共11章,包括Java开发环境的搭建及其运行机制、基本语法、面向对象的思想,采...

osc_3www0d3o
2018/02/05
14
0
Java基础入门 传智播客pdf

下载地址:网盘下载 内容简介   《Java基础入门》从初学者的角度详细讲解了Java开发中重点用到的多种技术。全书共11章,包括Java开发环境的搭建及其运行机制、基本语法、面向对象的思想,采...

osc_3www0d3o
2018/02/05
14
0
关于java的GUI编程

红薯大哥,我是一个大二的java初学者,现在我所在的工作室在做java的GUI编程,我想问一下在国内java的GUI编程方向的发展前景怎样,用的多不多,我在网上看了一下,基本上都没有招java的GUI这...

如梦人生
2013/03/29
5.7K
16
201771010130 王志成《面向对象程序设计(java)》第十八周学习总结

第一部分:理论知识学习部分 总复习纲要 1. Java语言特点与开发环境配置(第1章、第2章) 2. Java基本程序结构(第3章) 3. Java面向对象程序结构(第4章、第5章、第6章) 4. 类、类间关系、...

osc_axql7nqi
2018/12/30
7
0
狄慧201771010104《面向对象程序设计(java)》第十八周学习总结

实验十八 总复习 实验时间 2018-12-30 1、实验目的与要求 (1) 综合掌握java基本程序结构; (2) 综合掌握java面向对象程序设计特点; (3) 综合掌握java GUI 程序设计结构; (4) 综合掌握java多...

osc_axql7nqi
2018/12/30
5
0

没有更多内容

加载失败,请刷新页面

加载更多

向您推荐Groove BizTalk Workspace!

什么是Groove Office Groove 2007 是一个协作软件程序,适合用于处理从简单的文档协作到与业务过程集成的自定义解决方案的各种项目活动。 Office Groove 2007 的以下十大方式可帮助您和您的团...

osc_o8ipcpa5
刚刚
0
0
【我的Android进阶之旅】你可能不知道android.view.View#setAlpha()方法也会影响你的APP性能!

一、问题描述 最近在优化APP的性能的时候,发现了一个平时完全没有注意到的一个能够影响APP性能的代码。这个代码就是调用了android.view.View#setAlpha()方法。 1.1 需求描述 APP有个需求,是...

osc_y08db3kb
1分钟前
0
0
lsof命令详解

lsof命令详解 lsof 简介 lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境中一切皆文件,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制...

osc_htns3spg
1分钟前
0
0
设置非root账号不用sudo直接执行docker命令

环境信息 操作系统:Ubuntu 20.04 LTS 桌面版 Docker:19.03.10 现状 当前账号是willzhao,直接执行docker xxx命令会报以下错误: willzhao@ideapad:~$ docker imagesGot permission denie...

osc_kl6fknqf
2分钟前
0
0
小米净水器更换滤芯步骤和水龙头亮黄灯的解决办法

【开篇序言】 众所周知,无论何种品牌的净水器,滤芯都是有一定使用寿命的,而不是一次性安装可永久使用,如果遇到无需换滤芯这类宣布,请远离,不靠谱。换滤芯,小米净水器也不例外,小米净...

osc_zzg7fpke
3分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部