java中的GUI以及简单实例

一、GUI(图形用户接口)

 1. 用图形的方式来显示计算机操作界面,更方便直观
 2. java.awt(抽象窗口工具包),需要调用本地系统方法实现功能,属于重量级控件
 3. javax.swing在AWT的基础上,建立的一套图形界面系统,其中提高了更多的组件,完全由java实现,增强了移植性,属于轻量级控件
 4. Frame类方法都在下面的实例中进行演示
 5. 事件监听机制
  a) 事件源:事件发生的地方
  b) 事件:要发生的事件
  c) 事件处理:针对发生的事情做出处理方案
  d) 事件监听:将事件源和事件关联起来
 6. 适配器设计模式
  a) 问题:当接口方法比较多,但是实现类仅使用一个方法,这时也需要将其他方法一并实现
   (可以空实现),比较麻烦
  b) 解决此问题:在接口类和实现类中间加一个适配器类(适配器类为抽象类,仅仅空实现接口),
   实现类(继承适配器类,用哪个就重写哪个适配器类的方法)
  适配器类如:WindowAdapter
 7. 窗体布局:窗体中各个组件的排列方式
  a) 流式布局FlowLayout:从左到右,从上到下
  b) 边界布局BorderLayout:将容器分为东、西、南、北、中五个区域,每个区域只能包含一个组件,
   并通过相应常量进行表示
  c) 网格布局GridLayout:以矩形网格的形式对容器进行布置,容器被分成大小相等的矩形,
   一个矩形中放置一个组件
  d) 网格包布局GridBagLayout:不要求组件的大小相同便可以将组件垂直、水平或沿基线对齐。
  e) 卡片布局CardLayout:将容器组件看成一张卡片,一次只能看到一张卡片,容器充当卡片堆栈。
 8. 菜单组件
  a) MenuBar:菜单条
  b) Menu:菜单
  c) MenuItem:菜单项,
  d) 先创建菜单条,再创建菜单,每一个菜单中建立菜单项,也可以将菜单添加到菜单中,作为子菜单
  e) 通过setMenuBar()方法,将菜单添加到Frame中

二、程序实例
1. 窗体基本设置实例(包含Frame类常用方法)
package test1_frame;

import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class FrameDemo {
	public static void main(String[] args) {
		//创建窗体对象
		Frame f=new Frame();
		
		//创建窗体对象,并设置窗体标题为zfliu,和f.setTitle("zfliu96");方法功能相同
		//Frame f=new Frame("zfliu");
				
		//设置窗体大小
		f.setSize(800, 400);
		
		//设置窗体位置
		f.setLocation(200,300);
		
		//可以直接设置窗体的位置和大小
		//f.setBounds(200, 300, 800, 400);
		
		//设置窗体名字
		f.setTitle("zfliu96");

		//设置窗体是否可见,先设置好窗体的属性再将其显示出来
		f.setVisible(true);
		
		//关闭窗体
		//事件源:f
		//事件:对窗体进行处理
		//事件处理:关闭窗口(System.exit(0));需要实现WindowListener接口,并重写关闭窗口的方法
		//事件监听
		//使用适配器模式,只需要重写需要用的方法即可,WindowAdapter适配器类
		f.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				// TODO Auto-generated method stub
				System.exit(0);
			}
		});
	}
}

2. 添加并设置按钮功能实例
package test2_button;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*
 * 添加并设置按钮功能实例(按钮的功能:实现文本框内的数据向文本域转移)
 * 		1、创建窗体对象
 * 		2、创建按钮对象,并设置按钮功能
 * 		3、将按钮添加到窗体中
 * 		4、窗体显示
 * 		5、窗体关闭功能
 */
public class ButtonDemo {
	public static void main(String[] args) {
		Frame f=new Frame("数据转移");
		
		//设置分本框
		TextField tf=new TextField(20);
		
		//设置文本域
		TextArea ta=new TextArea(10,40);
		
		f.setBounds(400, 300, 400, 300);
		
		Button b=new Button("Button1");
		
		//设置按钮功能
		b.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//获取文本框的内容,并去除字符串前面和后面的空格
				String s=tf.getText().trim();
				
				//将字符串内容设置到文本域中
				//ta.setText(s);
				
				//追加内容,并换行
				ta.append(s+"\n");
				
				//复制结束后可以清楚文本框的内容
				tf.setText(null);
				
				//获取光标,使光标一直在文本框内
				tf.requestFocus();
			}
		});
				
		//将按钮添加到窗体中
		f.add(tf);
		f.add(b);
		f.add(ta);
		
		//设置窗体布局模式为流式布局
		f.setLayout(new FlowLayout());
		
		//关闭窗口
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		f.setVisible(true);
		
		
	}
}

在这里插入图片描述

3. 鼠标移入、移出按键测试实例
package test3_changecolor;

import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/*
 * 功能:鼠标移动到按钮上即可改变颜色
 */
public class Demo {
	public static void main(String[] args) {
		Frame f=new Frame("更改颜色");
		
		Button red=new Button("red");
		
		f.setLayout(new FlowLayout());
		
		f.setBounds(400, 200, 800, 400);
		
		f.add(red);
		
		f.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		
		//添加功能:用鼠标控制按钮
		
		//1、动作事件
//		red.addActionListener(new ActionListener() {
//			public void actionPerformed(ActionEvent e) {
//				f.setBackground(Color.red);
//			}
//		});
		
		//2、点击事件(与1功能相似都是鼠标点击按键更改颜色)
//		red.addMouseListener(new MouseAdapter() {
//			public void mouseClicked(MouseEvent e) {
//				f.setBackground(Color.red);
//			}
//		});
		
		//3、进入、退出事件
		red.addMouseListener(new MouseAdapter() {
			//进入变为红色
			public void mouseEntered(MouseEvent e) {
				f.setBackground(Color.red);
			}
			
			//移出变为白色
			public void mouseExited(MouseEvent e) {
				f.setBackground(Color.white);
			}
		});
		
		f.setVisible(true);
		
	}
}

在这里插入图片描述

4. 文本框只能输入数字实例
package test4_number;
/*
 * 实现文本框输入仅能输入数字的功能
 */
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;



public class Demo {
	public static void main(String[] args) {
		Frame f=new Frame("只能输入数字");
		
		Label l=new Label("只能输入数字");
		
		TextField tf=new TextField(20);
		
		f.setBounds(200,300,400,200);
		
		f.setLayout(new FlowLayout());
		
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		f.add(l);
		f.add(tf);
		
		//给文本框添加键盘录入事件
		tf.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				//获取文本输入字符
				char ch=e.getKeyChar();
				
				//如果是数字则取消事件
				if(!(ch>='0'&&ch<='9')) {
					e.consume();
				}
				
			}
		});
		
		f.setVisible(true);
	}
}

在这里插入图片描述

5. 多级菜单实例
package test5_menu;
/*
 * 功能:设置多级菜单,并实现各级菜单的功能
 */
import java.awt.Color;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Demo {
	public static void main(String[] args) {
		Frame f=new Frame("多级菜单");
		
		f.setBounds(400,300,400,200);
		
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		//设置菜单条
		MenuBar mb=new MenuBar();
				
		//设置菜单
		Menu m1=new Menu("菜单");
		Menu m2=new Menu("设置颜色");
		
		//设置菜单项
		MenuItem mi1=new MenuItem("退出系统");
		MenuItem mi2=new MenuItem("蓝色");
		MenuItem mi3=new MenuItem("恢复默认颜色");
		
		m1.add(m2);
		m1.add(mi1);
		m2.add(mi2);
		m2.add(mi3);

		mb.add(m1);
		
		//将菜单条添加到窗体中
		f.setMenuBar(mb);
		
		//设置菜单项功能
		mi1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		
		mi2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				f.setBackground(Color.blue);
			}
		});
		
		mi3.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				f.setBackground(Color.WHITE);
			}
		});
		
		f.setVisible(true);
		
	}
}

在这里插入图片描述

  • 18
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值