文档章节

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

© 著作权归作者所有

共有 人打赏支持
上一篇: java连接数据库
下一篇: Java网络通信示例
李茂冉
粉丝 5
博文 103
码字总数 59256
作品 0
东城
高级程序员
私信 提问
关于java的GUI编程

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

如梦人生
2013/03/29
5.6K
16
自学PHP要多久

没有web编程经验,自学过JAVASE,目前在学JAVA web开发,发现网上主机空间很少有支持JAVA的,故想用PHP开发一个网页。JAVA能开发简单GUI使用数据库读写。不知道转PHP是否明智?编程不为工作,...

winter_wind
2017/04/12
827
10
JMX学习以及在log4j中的应用

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

buglife
2015/01/06
0
15
一句话讲清楚什么是JavaEE

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

qq592fbb5b34ad7
07/02
0
0
如何让QT与java融合

各位知不知道如何在QT中调用java方法(除了使用android的那一套,因为我需要使用java也不是为了android开发),或者有没有这样的一个jar包,可以让你在java编程中使用QT那一套GUI设计框架。如...

集源广益
2016/06/05
774
3

没有更多内容

加载失败,请刷新页面

加载更多

Scala之初步认识与环境准备

1. 了解 Scala 1.1. 什么是 Scala Scala 是 Scalable Language 的简写,是一门多范式的编程语言。 Scala设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚...

飞鱼说编程
9分钟前
0
0
Vue项目分环境打包的实现步骤

在项目开发中,我们的项目一般分为开发版、测试版、Pre版、Prod版。Vue-cli的默认环境一只有dev和prod两个,之前每次要发布测试版或Pre版都是修改了源码中API地址后打包,这样很麻烦。如果能...

peakedness丶
10分钟前
0
0
vue+lowdb+express

搭建流程: 1.安装Node.js; 2.安装npm; 3.安装Express; 搭建流程 npm install -g express 安装 express 生成器 npm install -g express-generator 查看是否安装成功,随便输的一个命令...

Js_Mei
15分钟前
0
0
Qt那些事0.0.15

以下与Q_DECLARE_METATYPE相关内容全部是翻译自Qt文档。参看QVariant Class | Qt Core 5.9以及QMetaType Class | Qt Core 5.9 QVariant QVariant::fromValue(const T& value) 返回一份包含v......

Ev4n
16分钟前
3
0
spring上传文件返回绝对路径,简单工具类

import com.google.common.io.Files;import lombok.extern.slf4j.Slf4j;import org.springframework.web.multipart.MultipartFile;import java.io.File;import java.io.IOExceptio......

Boss-x
27分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部