Java图形化界面GUI-01-----黑马程序员

ASP.Net+Android+IOS开发------期待与您交流

 

<图形化界面>

 

<图形化界面的使用方法,概念>

1. 容器

  * 窗口,面板,选项卡,可以存放其他容器或者组件

    * Frame窗口

    * Dialog FileDialog

2. 组件

  * 按钮,文本框,对话框,菜单,不能单独使用,必须放在容器中

    * Button按钮

    * TextArea多行文本

    * TextField文本字段,单行文本

    * 必须要添加到容器中

3. awt和swing

  * awt 调用了操作系统中的方法,完成图形界面,依赖系统,重量级

  * swing 纯java编写的图形界面,不依赖操作系统 轻量级

4. Frame类,构建窗体的类

  * 构造方法,传递字符串,窗口的标题栏

  * setSize(width,height)宽,高,单位是像素

  * setVisible(true)窗口显示了

  * setLocation

  * Toolkit.getDefaultToolkit().getScreenSize().width;获取屏幕的分辩率

  * setLayout(null)取消布局管理器,实现组件的任意位置的放置 (组件要定义尺寸和位置)

  * setBounds(横轴,纵轴,宽度,高度)

  * setMenuBar()设置菜单栏

5. Button类,按钮构建

  * 构造方法,传递字符串

 

6. 窗体的布局管理器

7. 事件的监听机制

  * 事件源,就是用户操作的那个组件

  * 事件,鼠标事件,键盘事件,窗体事件

  * 监听器,监听,等待这个事件的发生

    * 按钮事件源,为按钮添加了一个事件监听器,监听鼠标的单击事件,交给事件处理方式

  * 事件处理

    * 就是个方法

  点击红色的叉子,关闭程序

  * 事件源,窗体

  * 窗体事件

  * 监听什么?窗体事件操作,点击红叉子

  * 交给一个方法来处理

8. 适配器设计模式

  * 是将接口适配成用户想要的效果

  * 抽象类实现接口中的方法,并且这个抽象类中全部是普通方法

  * 子类继承抽象方法,覆盖你想要的方法

9.TextField组件

  * 构造方法

10. 键盘事件

  * KeyEvent e

     * getKeyCode() ASCII 

     * getKeyChar() 字符

     * consume()

  * 实现Ctrl+Enter键

    * isControlDown()判断是否按下Ctrl键

11. 鼠标事件

  * mouseClicked(MouseEvent e)鼠标点击事件  

  * mouseEntered(MouseEvent e)鼠标进入组件

  * mouseExited(MouseEvent e)鼠标离开组件

  * int getClickCount()返回在组件上,鼠标点击了多少次

12. Dialog对话框容器

  * 构造方法(所属窗体,标题,模式)

  * Label显示文字

13. awt的实例

  * 用户输入一个路径,展示这个路径中的有文件和文件夹

  * 使用的技术 IO awt

    * awt中需要的容器和组件

       * Frame

       * 文本框组件

       * Label组件

       * 按钮组件

       * 对话框

    * IO中需要哪些类

       * File

 

GUI练习

  * 实现步骤:

    A-- 先做界面

    B-- 事件的响应

      B1* 窗口的关闭

      B2* 点击按钮

          * 获取这个文本框中写的是什么

  * 获取到输入后,判断空

  * 封装成File对象,判断输入的目录有没有,判断是不是目录

  * 获取文件列表 、listFiles()

      B3* 输入后直接按下回车键

 下面是对GUI的整体性应用代码实现如下:

package cn.filelist;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.lang.reflect.Field;
import java.security.PublicKey;
public class GuiDemo {
	//定义窗体组件
	private Frame frm= null;
	//功能的使用说明
	private Label fla = null;
	//输入文本框组件
	private TextField tf = null;
	//确定按钮
	private Button okbut = null;
	//多行的文本,显示文件列表的
	private TextArea ta=null;
	//对话框容器
	private Dialog dg =null;
	//对话框上的文字提示组件
	private Label dla = null;
	//对话框上的确定按钮
	private Button dbut = null;
	//屏幕的宽度和高度
	private static final int WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;
	private static final int HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;
	public GuiDemo(){
		init();
	}
	private void init(){
		//对窗体进行设置
		frm = new Frame("文件列表功能");
		frm.setBounds((WIDTH-550)/2, (HEIGHT-650)/2, 550, 650);
		frm.setBackground(new Color(204,232,207));
		frm.setLayout(null);
		frm.setVisible(true);
		
		//对窗体组件进行设置。
		//功能的使用说明
		fla = new Label("请输入路径,之后会显示路径下的全部文件名列表");
		fla.setBounds(40,30,500,30);
		frm.add(fla);
		
		//对输入的单行文本框进行设置
		tf = new TextField();
		tf.setBounds(40, 70, 420, 20);
		frm.add(tf);
		
		//对确定按钮进行设置
		okbut = new Button("确定");
		okbut.setBounds(490, 70, 40, 20);
		frm.add(okbut);
		
		//对多行文本进行设置
		ta = new TextArea();
		ta.setBounds(40, 105, 425, 480);
		ta.setEditable(false);
		frm.add(ta);
		
		//对话框的设置
//		构造一个最初不可见的 Dialog,
//		它带有指定的所有者 Frame、标题和模式。
		dg = new Dialog(frm,"错误的提示信息",true);
		dg.setBounds((WIDTH-600)/2, (HEIGHT-100)/2, 600, 100);
		dbut =new Button("确定");
		dg.setLayout(null);
		myEvent();
	}
	//定义专门的方法专门处理各种事件
	private void myEvent(){
		frm.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
		//点击确定按钮的事件
		okbut.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getListFile();
			}
		});
		//对话框中关闭
		dg.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e){closeDialog();}
		});
		//按钮的关闭
		dbut.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {closeDialog();}
		});
		//输入文本框的键盘事件,按下回车键
		tf.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e){
				int code = e.getKeyCode();
				if(code == KeyEvent.VK_ENTER){
					getListFile();
				}
			}
		});
	}
	private void closeDialog(){
		dg.setVisible(false);
	}
	private void getListFile(){
		//判断在文本框中输入的内容,按下确定之后如果正确则直接输出文件列表
		//获取文本框中输入的内容
		String path = tf.getText();
		//判空,健壮性判断
		if("".equals(path))
			return;
		//去掉空格方法
		path = path.trim();
		//创建文件类对象并传入字符串路径
		File f = new File(path);
		//判断是不是文件
		if(!f.exists()){
			//对话框出现的时机
			//Label 对象是一个可在容器中放置文本的组件。
			//一个标签只显示一行只读文本。
			//文本可由应用程序更改,但是用户不能直接对其进行编辑
			dla = new Label("蠢货你输入的路径  "+ path + "不存在!请重新输入");
			dla.setBackground(Color.cyan);
			dla.setBounds(150, 50, 400, 20);
			dg.add(dla);
			dbut.setBounds(270, 75, 50, 20);
			dg.add(dbut);
			dg.setVisible(true);
		}else if(!f.isAbsolute()){
			//否则是文件,则获取文件名列表
			dla = new Label("二货你输入的"+path +"是文件请重新输入");
			dla.setBounds(150, 50, 400, 20);
			dg.add(dla);
			dbut.setBounds(200, 75, 50, 20);
			dg.add(dbut);
			dg.setVisible(true);
		}else {
			//否则就是正确的路径了 
			ta.setText("");
			File [] file = f.listFiles();
			for(File ff:file){
				//	ta.setText(ff+"");
				ta.append(ff+"\t\n");
			}
		}
	}
	
}

 

ASP.Net+Android+IOS开发------期待与您交流

 详细请查看:http://edu.csdn.net

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值