黑马程序员:JavaGUI

------- android培训java培训、期待与您交流! ----------


一、GUI概述

GUI

Graphical User Interface(图像化用户接口)
用图形的方式,来显示计算机操作的界面,这样更方便更直观。

CLI

Command Line User Interface(命令行用户接口)
就是常见的Dos命令行
需要记忆一些常用的命令,操作不直观。

Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。

二、Awt与Swing

java.Awt:Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能。属于重量级控件。

javax.Swing:在AWT的基础上,建立的一套图形化系统,其中提供了更多的组件,而且完全由Java实现,增强了移植性,属于轻量级控件。

三、布局管理器

容器中的组件的排放方式,就是布局。

常见的布局管理器:

FlowLayout(流式布局管理器)

从左到右的顺序排放

Panel默认的布局管理器

BorderLayout(边界布局管理器)

东、南、西、北、中

Frame默认的布局管理器

Gridlayout  (网格布局管理器)

规则的矩阵

GardLayout(卡片布局管理器)

选项卡

GridbagLayout(网格包布局管理器)

非规则矩阵


四、Frame

Frame 是带有标题和边界的顶层窗口。

frame 的大小包括边界指定的所有区域。边界区域的尺寸可以使用 getInsets 方法获得,但是,由于这些尺寸是与平台相关的,因此在通过调用 pack或 show 将 frame 设置为可显示的之前,无法获得有效的 insets 值。由于 frame 的总大小包括了边界区,因此边界有效地模糊了 frame 的部分区域,约束了可用于在矩形中呈现和/或显示子部件的区域,矩形左上角的位置为 (insets.left, insets.top),宽度为 width - (insets.left + insets.right),长度为 height - (insets.top + insets.bottom)。

frame 的默认布局为 BorderLayout。

创建简单的图形化界面:

1、创建frame窗体

2、对窗体进行简单的设置

3、定义组件

4、将组件添加到窗体

5、让窗体显示

例:

package com.java;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;

public class AwtDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Frame frame = new Frame("我的第一个窗口");
		frame.setSize(500, 300);					//设置窗口的长和宽
		frame.setLocation(300, 200);				//设置窗口的初始化位置
		frame.setLayout(new FlowLayout());			//设置布局方式
		Button button1 = new Button("我是一个button");// 创建button
		frame.add(button1);									//添加button到frame
		frame.setVisible(true);						//设置窗口为可见
	}

}

五、事件监听机制组成

1、事件源(组件):awt或swing包中那些图像界面组件

2、事件对象:每一个事件源都有自己特有的对应事件和共有事件

3、监听器:将可以触发某一事件的动作都已经封装到监听器中

以上三者,在java中都已经定义好了。直接获取其器对象来用就可以了。

我们要做的事情就是对动作进行处理。

4、事件处理。


六、窗体事件

窗体关闭事件
例:
package com.java;

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

public class AwtDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Frame frame = new Frame("我的第一个窗口");
		frame.setSize(500, 300);					//设置窗口的长和宽
		frame.setLocation(300, 200);				//设置窗口的初始化位置
		frame.setLayout(new FlowLayout());			//设置布局方式
		Button button1 = new Button("我是一个button");// 创建button
		frame.add(button1);								//添加button到frame
		frame.addWindowListener(new Mywin());
		frame.setVisible(true);						//设置窗口为可见
	}
	

}

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


七、Action事件


package com.java;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class FrameDemo {

	/**
	 * @param args
	 */
	private Frame frame;
	private Button button;
	FrameDemo()
	{
		init();
	}
	public void init() {
		frame = new Frame("my frame");
		frame.setBounds(300,100,600,500);
		frame.setLayout(new FlowLayout());
		button = new Button("my button");
		frame.add(button);
		
		//加载窗体事件
		myevent();
		frame.setVisible(true);
	}
	private void myevent() {
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		//让按钮具备退出程序的功能
		button.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				System.out.println("exit");
				System.exit(0);
				
			}
		});
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new FrameDemo();
	}

}


八、鼠标、键盘事件


package com.java;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MouseAndKey {

	/**
	 * @param args
	 */
	private Frame frame;
	private Button button;
	
	MouseAndKey()
	{
		init();
	}
	public void init() {
		frame = new Frame("my frame");
		frame.setBounds(300,100,600,500);
		frame.setLayout(new FlowLayout());
		button = new Button("my button");
		frame.add(button);
		
		//加载窗体事件
		myevent();
		frame.setVisible(true);
	}
	private void myevent() {
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		//让按钮具备退出程序的功能
//		button.addActionListener(new ActionListener() {
//			
//			@Override
//			public void actionPerformed(ActionEvent arg0) {
//				// TODO Auto-generated method stub
//				System.out.println("exit");
//				System.exit(0);
//				
//			}
//		});
		//鼠标事件监听
		button.addMouseListener(new MouseAdapter() {
			public void mouseEntered(MouseEvent e) {
				System.out.println("鼠标进入该组件");
				
			}
		});
		//键盘事件监听
		button.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				System.out.println(e.getKeyChar()+"..."+e.getKeyCode());
				if(e.getKeyCode()==KeyEvent.VK_ESCAPE){
					System.exit(0);
				}
				
			}
		});
			

		}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new MouseAndKey();
	}

}

九、简单的小程序

简单的列出磁盘路径的小程序。

package com.java;

import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
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;
import java.io.File;

public class AreaDemo {

	/**
	 * @param args
	 */
	private Frame frame;
	private Button button;
	private TextArea textArea;
	private TextField textField;
	private Dialog dialog;
	private Button okbutton;
	private Label label;
	AreaDemo(){
		init();
	}
	
	public void init() {
		frame = new Frame("my frame");
		frame.setBounds(300,100,600,500);
		frame.setLayout(new FlowLayout());
		
		textField = new TextField(30);
		button = new Button("转到");
		textArea = new TextArea(15,40);
		
		frame.add(textField);
		frame.add(button);
		frame.add(textArea);
		
		
		frame.setVisible(true);
		dialog = new Dialog(frame,"提示信息",true);
		dialog.setBounds(400,200,240,150);
		dialog.setLayout(new FlowLayout());
		label = new Label();
		okbutton = new Button("确定");
		dialog.add(label);
		dialog.add(okbutton);
		myevent();
			
	}
	
	public void myevent() {
		button.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				String dirPath = textField.getText();
				File dir = new File(dirPath);
				if (dir.exists()&&dir.isDirectory()) {
					textArea.setText("");
					String[] names = dir.list();
					for(String name:names )
						textArea.append(name+"\r\n");
					
				}else{
					String infoString  = "您输入的信息:"+dirPath+"错误!请重新输入。";
					label.setText(infoString);
					dialog.setVisible(true);
					
				}
			}
		});
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		dialog.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				dialog.setVisible(false);
			}
		});
		okbutton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				dialog.setVisible(false);
			}
		});
		
		
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new AreaDemo();
	}

}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值