--------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------

1.  GUI图形用户界面

1.简述

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

2.CLI:Command Userainterface(命令行用户接口)

就是常见的Dos命令操作

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

Awt和Swinf区别

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

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

2.布局

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

1.  Flowlayout流式布局  从左向右的顺序排列 Panel默认的布局默认管理器

2.  BorderLayout(边界布局管理器) 东 南 西 北中 Frame默认的布局管理器

3.  Gridlayout(网络布局管理器) 规则额矩阵

4.  GridBaglayout(网格包布局管理器) 非规则的矩阵

5.  Gradlayout(卡片布局管理器)  选项卡

3.创建图形化界面




1.创建Frame窗体

2.对窗体进行基本设置:大小,位置和布局

3.定义要添加的组件

4.将组件添加到窗体中

5.显示窗体

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame; public class FrameDemo {
public static void main(String[] args) {
Frame f = new Frame("MY");
f.setSize(500, 400);// 设置大小
f.setLocation(300, 200);// 设置位置
f.setLayout(new FlowLayout());// 设置布局是流水式布局
Button b = new Button("第一个Button");// 定义一个Button按钮
f.add(b);// 将Button空间添加到窗体上
f.setVisible(true);// 设置窗体可见
} }

4.监听器

事件源:awt或者swing包中的那些图形界面组件

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

监听器;将可以触发某一个事件的动作(不只是一个工作)都已经封装到了监听器中

他们之间的关系:

把监听器安装事件源上,然后外部动作触发事件源,然后产生把其封装成对象传给监听器 ,然后触发其中的事件,做出相应的动作。

 import java.awt.Button;
import java.awt.FlowLayout;
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("MY");
f.setSize(500, 400);// 设置大小
f.setLocation(300, 200);// 设置位置
f.setLayout(new FlowLayout());// 设置布局是流水式布局
Button b = new Button("第一个Button");// 定义一个Button按钮
f.add(b);// 将Button空间添加到窗体上
f.setVisible(true);// 设置窗体可见
/*
* 添加监听器,里面的参数是WindowListener,但是其有7个抽象方法,我我只用其中的一个方法,
* 那么我们重写其他方法的话,太麻烦,所以我们找到了已经实现好的子类:WindowAdapter,这样我们需要什么方法就重写什么方法
*/
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {// 关闭事件
System.out.println("关闭窗口");
System.exit(0);// 关闭动作
} public void windowActivated(WindowEvent e) {// 窗口激活事件,就是前置窗口
System.out.println("前置窗口");
}
});
} }

5.Action事件

现在就是Button按钮的事件,现在我们定义一个类,把窗体和事件分开写,这样也便于操作。

增加Button按钮的监听器的话,那么就在Button类中查找,增加的监听器是addActionListener(ActionListener l),其ActionListener接口中就一个抽象方法,所以不需要使用适配器,之间使用匿名内部类就可以重写其监听的动作。

import java.awt.Button;
import java.awt.Color;
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 ActionDemo {
private Frame ff;// 声明窗体
private Button bu;// Button按钮 public ActionDemo() {
init();
} public void init() {// 初始化方法
ff = new Frame("MY—Frame");
bu = new Button("点击我,关闭");
bu.setBackground(Color.blue);//设置背景颜色
ff.setBounds(200, 300, 300, 200);// 设置位置和大小
ff.setLayout(new FlowLayout());// 设置布局为流水式
ff.add(bu);// 将Button添加到窗体上
Action();// 监听器,事件处理
ff.setVisible(true);// 设置窗体可见
} public void Action() {// 事件方法
/* 设置窗体的监听器 */
ff.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.out.println("窗体的关闭事件:关闭");
System.exit(0);
}
});
/* 设置Button的监听器 */
bu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {// Button的事件
System.out.println("Button的事件:关闭");
System.exit(0); } });
}
public static void main(String[] agrs) {
new ActionDemo();
}
}

6.鼠标和键盘监听器

1.鼠标监听器

importjava.awt.Button;
importjava.awt.Color;
importjava.awt.FlowLayout;
importjava.awt.Frame;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent; publicclass MouseDemo { private Frame ff;// 声明窗体
private Button bu;// Button按钮 public MouseDemo() {
init();
} public void init() {// 初始化方法
ff = new Frame("MY—Frame");
bu = new Button("点击我,关闭");
bu.setBackground(Color.blue);// 设置背景颜色
ff.setBounds(200, 300, 300, 200);// 设置位置和大小
ff.setLayout(new FlowLayout());// 设置布局为流水式
ff.add(bu);// 将Button添加到窗体上
Action();// 监听器,事件处理
ff.setVisible(true);// 设置窗体可见
} public void Action() {// 事件方法
/* 设置窗体的监听器 */
ff.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.out.println("窗体的关闭事件:关闭");
System.exit(0);
}
});
/* 设置Button的监听器 */
bu.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvente) {// Button的事件
System.out.println("活动事件");
} });
/* 给Button增加了鼠标监听器,因为Button是compontent子类,那么增加的监听器方法在compontent类中 */
bu.addMouseListener(new MouseAdapter() {//鼠标事件
/* 单击,单击事件比活动事件先执行,只要是Button一活动,不管是鼠标还是键盘,都会执行 */
public voidmouseClicked(MouseEvent e) {// 默认的是单击 /*
* if (e.getClickCount() == 2) {
* System.out.println("双击"); }
*/ System.out.println("单击执行"); } /* 移动事件 */
public void mouseEntered(MouseEvente) {
System.out.println("移动到Button上");
}
}); } public static void main(String[] args) {
new MouseDemo();
} }

2.键盘监听器

import java.awt.Button;
import java.awt.Color;
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.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; public class KeyDemo { private Frame ff;// 声明窗体
private Button bu;// Button按钮 public KeyDemo() {
init();
} public void init() {// 初始化方法
ff = new Frame("MY—Frame");
bu = new Button("点击我,关闭");
bu.setBackground(Color.blue);// 设置背景颜色
ff.setBounds(200, 300, 300, 200);// 设置位置和大小
ff.setLayout(new FlowLayout());// 设置布局为流水式
ff.add(bu);// 将Button添加到窗体上
Action();// 监听器,事件处理
ff.setVisible(true);// 设置窗体可见
} public void Action() {// 事件方法
/* 设置窗体的监听器 */
ff.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.out.println("窗体的关闭事件:关闭");
System.exit(0);
}
});
/* Button添加键盘监听器 */
bu.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {// 按下事件
/* 按下ESC键,关闭窗口 */
if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
System.out.println("ESC键,关闭");
System.exit(0);
}
/*
* 组合键,在KeyEvevt的父类:InputEvent中,
* 有isControlDown就是Ctrl键是否按下,还有判断其他的键是否按下下面Ctrl+Enter键,就数组“组合键”
*/
if (e.isControlDown() & e.getKeyCode() == KeyEvent.VK_ENTER)
System.out.println("组合键");
}
});
} public static void main(String[] args) {
new KeyDemo(); } }

对文本框设置键盘监听器:文本框中只能输入数字

思路:

1.在窗体上添加一个文本框

2.对文本框添加键盘监听器

3.判断按下的键,如果符合添加默认输入,如果不符合条件则使用KeyEvent的父类InputEvent中的consume()方法取消默认事件。

public class TextFieldDemo {
private Frame ff;// 声明窗体
private TextField text;// 声明文本框 public TextFieldDemo() {
init();
} public void init() {// 初始化方法
ff = new Frame("MY—Frame");
text = new TextField(10);// 长度是10列 ff.setBounds(200, 300, 300, 200);// 设置位置和大小
ff.setLayout(new FlowLayout());// 设置布局为流水式
ff.add(text);//添加到框架中
Action();// 监听器,事件处理
ff.setVisible(true);// 设置窗体可见
} public void Action() {// 事件方法
/* 设置窗体的监听器 */
ff.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.out.println("窗体的关闭事件:关闭");
System.exit(0);
}
});
/*为文本框添加键盘监听器*/
text.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){//按下事件
int key=e.getKeyCode();
if(!(key>=KeyEvent.VK_0 && key<=KeyEvent.VK_9)){
e.consume();//不执行默认动作,就是不添加到文本框中
}
}
}); } public static void main(String[]args) {
new TextFieldDemo(); } }

7.列出目录内容-练习

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;
import java.io.File; public class DirDemo { private Frame ff;
private TextField text;
private Button bu;
private TextArea area;
public DirDemo(){
init();
}
/*初始化方法*/
public void init(){
/*窗体设置*/
ff=new Frame("查看目录列表");
ff.setSize(400, 500);//设置大小
ff.setLocation(300, 200);//设置位置
ff.setLayout(new FlowLayout());//设置布局 /*TextField设置*/
text=new TextField(40);//初始化的时候指定列
ff.add(text);//添加到窗体上
/*Button设置*/
bu=new Button("转到");
ff.add(bu);//添加到窗体上
/*TextArea 设置*/
area=new TextArea(20,50);
ff.add(area);//添加到窗体上
myEvent();
ff.setVisible(true);//设置显示
}
/*监听器和事件*/
public void myEvent(){
/*设置窗体监听器*/
ff.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){//关闭事件
System.out.println("窗体关闭");
System.exit(0);
}
});
/*设置Button的监听器*/
bu.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {//活动事件
String url=text.getText();//或得TextField中的信息
area.setText("");
File dir=new File(url);
int count=0;
if(dir.isDirectory()){
String [] fileNames=dir.list();
for(String name:fileNames){
count++;
area.append((new Integer(count)).toString()+":-");
area.append(name);
area.append("\r\n"); }
}else{
area.setText("您输入的路径不是一个文件目录");
}
text.setText(""); } });
}
public static void main(String[] args) {
new DirDemo(); } }

结果:

--------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------

黑马程序员_<<GUI(图形用户界面)--------1>>的更多相关文章

  1. 黑马程序员_<<String类>>

    --------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1. String类 1.概述 String ...

  2. 大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17

    黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目 ...

  3. 2016年8月17日 内省(1)18_黑马程序员_使用beanUtils操纵javabean

    8.内省(1):18_黑马程序员_使用beanUtils操纵javabean 1.导入两个包: 2.调用静态方法. 9.泛型 map.entrySet() :取出map集合的键值对组成一个set集合. ...

  4. 黑马程序员_高新技术之javaBean,注解,类加载器

    ----------- android培训.java培训.java学习型技术博客.期待与您交流! ---------- 第一部分 javaBean 一,由内省引出javaBean 1,内省: 内省对应 ...

  5. JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典

    总结: 记住:servlet对象在应用程序运行的过程中只创建一次,浏览器每次访问的时候,创建reponse对象 request对象,然后调用servlet的service方法,reponse对象和re ...

  6. 黑马程序员_ JAVA中的多线程

    ------- android培训.java培训.期待与您交流! ---------- 尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的. 本来打算用一节 ...

  7. 黑马程序员_ Objective-c 面向对象笔记详解

    1)类,对象,方法 类 类名: 1) 类名的第一个字母必须是大写 2) 不能有下划线 3) 多个英文单词,用驼峰标识 类的声明和实现 类的声明 @interface 类名 : NSObject { @ ...

  8. 黑马程序员_ Objective-c 概述及面向对象与三大特性

    -----------android培训.java培训.java学习型技术博客.期待与您交流!------------ (一).语法概述 1. oc介绍:(.m文件) 1> c语言的基础上,增加 ...

  9. 黑马程序员_ Objective-c 之block、protocol学习笔记

    一):block学习总结 block :用来保存一段代码. 1.block 特点:  1> Block封装了一段代码,可以在任何时候执行   2> Block可以作为函数或者函数的返回值, ...

  10. 黑马程序员——OC语言 类和对象

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)类 1)类的声明 代码编写 ①定义一个Car类,拥有2个属性:轮子数 ...

随机推荐

  1. jquery放大镜插件与样式

    这是放大镜插件链接,我已经上传到我博客http://files.cnblogs.com/valiant1882331/%E6%94%BE%E5%A4%A7%E9%95%9C%E6%8F%92%E4%B ...

  2. Dataset

    1,if(ds == null) 这是判断内存中的数据集是否为空,说明DATASET为空,行和列都不存在!! 2,if(ds.Tables[0].Count == 0) 这应该是在内存中存在一个DAT ...

  3. mysqli扩展库操作mysql数据库

    配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll 建库建表 详见博客 “mysql扩展库操作mysql数据库” 查询数据库 <?p ...

  4. Yii render和renderPartial的区别

    以下由我们在信易网络公司开发项目的时候终结出的一些经验 在进行页面输出渲染的时候. 1.render 输出父模板的内容,将渲染的内容,嵌入父模板.|2.renderPartial 则不输出父模板的内容 ...

  5. 根据日期自增的sql语句

    Insert into wd_orderitem (count , id_dish , state , info , sn , id_order)values(1 , 1000000001 , 3 , ...

  6. 程序在nor flash中真的可以运行吗?

    程序在nor flash中可以运行,但是是有限制的,它不能像RAM那样随意的写(尽管它可以随意的读).在norflash上,不能运行写存储器的指令,不过排除写的地方是RAM类.实验中的三个文件如下所示 ...

  7. 2015年9月29日 sql 触发器

    触发器(trigger):当有关联操作的时候使用(级联操作),属于ddl关键字. eg:下订单时,创建中的商品数量要减少:退票时,总的票数要增加.         在订单上建立触发器         ...

  8. 简单的网页采集程序(ASP.NET MVC4)

    因为懒人太多,造成现在网页数据采集非常的流行,我也来写个简单的记录一下. 之前写了MVC的基本框架的搭建随笔,后面因为公司太忙,个人感情问题:(,导致不想写了,就写了两篇给删除了,现在就搁浅了, 本人 ...

  9. bzoj3667: Rabin-Miller算法

    Description   Input 第一行:CAS,代表数据组数(不大于350),以下CAS行,每行一个数字,保证在64位长整形范围内,并且没有负数.你需要对于每个数字:第一,检验是否是质数,是质 ...

  10. python学习之--自定义函数:

    Python之--自定义函数: 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 以下自定义 ...