--------------------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. js 数组 var arr=[] 的用法总结

    刚接触了一个js数组,用起来很头疼,总结一下 基本格式: var arr = [[name,value],[name2,value2],[name3,value3]]; 如何给 arr 动态添加元素 ...

  2. ng表单验证,提交以后才显示错误

    只在提交表单后显示错误信息 有时候不想在用户正在输入的时候显示错误信息. 当前错误信息会在用户输入表单时立即显示. 由于Angular很棒的数据绑定特性,这是可以发生的. 因为所有的事务都可以在一瞬间 ...

  3. MVC页面上多个提交按钮提交到不同的Action

    使用mvc扩展类,ActionNameAttribute方法如下: [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, In ...

  4. SQL Server 2008 R2 主从数据库同步设置

    一.准备工作: 主数据库服务器: OS:Windows Server 2008 R2    DB: SQL Server 2008 R2 Hostname : CXMasterDB IP: 192.1 ...

  5. No Hibernate Session bound to thread, and configuration does not allow creat

    No Hibernate Session bound to thread, and configuration does not allow creat 今天遇到这么一个错误,在网上差了很多都没有能解 ...

  6. 使用SeaJS实现模块化JavaScript开发(新)

    本文转自张洋,因为SeaJS更新版本很快,所以原文中很多地方不太适用,在这里发布一个更新版. 前言   SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaSc ...

  7. 排名第一、第二的OCR软件

    排名第一.第二的OCR软件 第一:ABBYY FineReader      OCR世界排名第一,在俄罗斯获国际科技大奖奖超过卡巴斯基! 不仅仅只是文字识别,还能表格识别,版面还原,字体识别,文档结构 ...

  8. bzoj 3435: [Wc2014]紫荆花之恋 替罪羊树维护点分治 && AC400

    3435: [Wc2014]紫荆花之恋 Time Limit: 240 Sec  Memory Limit: 512 MBSubmit: 159  Solved: 40[Submit][Status] ...

  9. Stanford CoreNLP--Named Entities Recognizer(NER)

    Standford Named Entities Recognizer(NER),命名实体识别是信息提取(Information Extraction)的一个子任务,它把文字的原子元素(Atomic ...

  10. Stanford Parser学习入门(3)-标记

    以下是Stanford parser中的标记中文释义供参考. probabilistic context-free grammar(PCFG)     ROOT:要处理文本的语句 IP:简单从句 NP ...