GUI

Graghical User Interface(图形用户接口)

java为GUI提供的对象都存在java.awt和java.swing包中

Java的GUI做的的确干只是C++等。不打算浪费过多的时间在这上面

一个简单的窗口演示

public static void main(String[] args){

		Frame f = new Frame("新窗口");
f.setLocation(400, 200);//设置窗口的位置 f.setSize(500, 400);//设置窗口大小
//f.setBounds(400, 200, 500, 400);功能相当于上面两句
f.setLayout(new FlowLayout());//设置 流式 布局
Button bt = new Button("一个button");
f.add(bt);
f.setVisible(true);//显示窗口
}

显示出窗口后发现无法关闭窗口,就用到了事件监听机制

其组成:事件源(组件)、事件(Event)、监听器(Listener)、事件处理(引发事件后处理方式)

 

	public static void main(String[] args){

		Frame f = new Frame("新窗口");
f.setLocation(400, 200);//设置窗口的位置 f.setSize(500, 400);//设置窗口大小
//f.setBounds(400, 200, 500, 400);功能相当于上面两句
f.setLayout(new FlowLayout());//设置 流式 布局
Button bt = new Button("一个button");
f.add(bt); //由于关不掉这一事件。 要注冊一个监听器
//窗口适配器类WindowAdapter,已经覆盖了全部方法,便捷于创建监听器
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});//加入窗口监听 f.setVisible(true);//显示窗口 }

用户对组件操作。就是一个事件。那么产生事件的组件就是事件源。

ActionListener演示:

public static void main(String[] args){

		Frame f = new Frame("新窗口");
f.setLocation(400, 200);//设置窗口的位置 f.setSize(500, 400);//设置窗口大小
//f.setBounds(400, 200, 500, 400);功能相当于上面两句
f.setLayout(new FlowLayout());//设置 流式 布局
Button bt = new Button("一个button");
f.add(bt); //由于关不掉这一事件, 要注冊一个监听器
//窗口适配器类WindowAdapter,已经覆盖了全部方法,便捷于创建监听器
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});//加入窗口监听 //在button上加入一个监听事件:点击一下退出 bt.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) { //System.out.println("按了");
System.exit(0);
}
}); f.setVisible(true);//显示窗口 }

键盘和鼠标监听事件

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
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 Main { private Frame f;
private TextField tf;//文本框
private Button bt;
public Main(){
init();
}
private void init(){
f = new Frame("鼠标和键盘监听");
bt = new Button("button");
f.setBounds(400, 200, 500, 400);
f.setLayout(new FlowLayout());
tf = new TextField(40);//指定列数
f.add(tf);
f.add(bt);
myEvent();
f.setVisible(true);
} private void myEvent(){
//给文本框加入键盘监听
tf.addKeyListener(new KeyAdapter() { @Override
public void keyPressed(KeyEvent e) {//按下 //System.out.println("key Pressed : "+e.getKeyChar()+" : "+e.getKeyCode()+" : "+e.getKeyText(e.getKeyCode()));//按下即打印
/* int code = e.getKeyCode();
if(!(code>=KeyEvent.VK_0 && code <= KeyEvent.VK_9))//推断
{
System.out.println("必须数字");
e.consume();//使用。不会依照默认的事件处理方式
}
if(e.getKeyCode()==KeyEvent.VK_ENTER){//按下回车
System.out.println("enter.....");
}
*/
if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){//按下Ctrl+回车
System.out.println("Crtl enter.....");
}
} });
//在窗口上加入退出监听器
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
}); //在button上加入鼠标监听器
bt.addMouseListener(new MouseAdapter() { private int count = 1;//计数器 public void mouseEntered(MouseEvent e) {//鼠标碰到即触发 tf.setText("mouse enter : "+count++);//信息加入到文本框 }
public void mouseClicked(MouseEvent e) {//点击
if(e.getClickCount()==2){//得到点击次数,双击
System.out.println("mouseClicked Double click");
}
/*else if(e.getClickCount()==1){
System.out.println("mouseClicked only click");
}*/
}
});
}
public static void main(String[] args){
new Main(); }
}

关于Swing包中的。须要在Ecplice安装插件。

版权声明:本文博主原创文章。博客,未经同意不得转载。

JAVA学习课第五十八届 — GUI的更多相关文章

  1. JAVA学习课第五 — IO流程(九)文件分割器合成器

    文件分割器 private static final int SIZE = 1024 *1024; public static void splitFile(File file) throws IOE ...

  2. JAVA学习课第五十三届 — IO流程(七)File打靶 &amp; Properties设置

    一个.锻炼 深度遍历目录 深度遍历非常自然而然想到递归,而递归就非常自然的想到事实上现的底层算法是栈 对指定文件夹下列出全部内容(包括子文件夹的内容) PS:建议不要遍历C盘 import java. ...

  3. 201671010140. 2016-2017-2 《Java程序设计》java学习第十五周

    java学习第十五周 Java的GUI界面设计,框架以及主要部件填充,归置,布局管理,在第十一章和第十二章进行了系统的学习,在这两章的知识奠基下,可以简单的构造一个GUI用户界面,在两周的学习后,可以 ...

  4. JAVA学习课第二十八届(多线程(七))- 停止-threaded多-threaded面试题

    主密钥 /*  * wait 和 sleep 差别?  * 1.wait能够指定时间也能够不指定  * sleep必须指定时间  * 2.在同步中,对CPU的运行权和锁的处理不同  * wait释放运 ...

  5. JAVA学习第二十五课(多线程(四))- 单例设计模式涉及的多线程问题

    一.多线程下的单例设计模式 利用双重推断的形式解决懒汉式的安全问题和效率问题 //饿汉式 /*class Single { private static final Single t = new Si ...

  6. Java学习笔记(五)

    作业1:将指定目录下的所有文件显示到列表框(JList)组件中. 代码如下: import java.awt.; import java.awt.event.; import javax.swing. ...

  7. Java学习笔记(五)——google java编程风格指南(中)

    [前面的话] 年后开始正式上班,计划着想做很多事情,但是总会有这样那样的打扰,不知道是自己要求太高还是自我的奋斗意识不够?接下来好好加油.好好学学技术,好好学习英语,好好学习做点自己喜欢的事情,趁着自 ...

  8. Java学习之路(五):常见的对象操作

    Object对象 我们先来介绍一下API API(Application Programming Interface):应用程序编程接口 Java API 就是Java提供给我们使用的类,这些类将底层 ...

  9. Java 学习笔记 ------第五章 对象封装

    本章学习目标: 了解封装的概念与实现 定义类.构造函数与方法 使用方法重载与不定长度自变量 了解static方法 一.Java封装概念 在面向对象程式设计方法中,封装(英语:Encapsulation ...

随机推荐

  1. There is no Action mapped for namespace / and action name UserAction

    果断收藏了,说的非常具体.刚開始学习的人常常遇到的问题. There is no Action mapped for namespace / and action name UserAction 在网 ...

  2. windows phone 7 通过麦克风录音,并且播放

    原文:windows phone 7 通过麦克风录音,并且播放 //模拟XNA的框架(凡是在wp7中应用xna的都必须先模拟此类) public class XNAAsyncDispatcher : ...

  3. 【JavaEE基础】在Java中如何使用jdbc连接Sql2008数据库

    我们在javaEE的开发中,肯定是要用到数据库的,那么在javaEE的开发中,是如何使用代码实现和SQL2008的连接的呢?在这一篇文章中,我将讲解如何最简单的使用jdbc进行SQL2008的数据库的 ...

  4. javascript一元操作符(递增,递减)

    <script type="text/javascript"> var a="1"; var b=false; var c="dd&quo ...

  5. windows phone (19) 深入了解TextBlock

    原文:windows phone (19) 深入了解TextBlock TextBlock 一般用于显示文本的元素,我们最为经常用到的是该类的Text属性,其实显示文本有两种呈现方式,一个是设置内部文 ...

  6. 解决.net的堆碎片化带来的内存占用过大的问题

    场景 使用WCF开发的服务端在多个客户端登录后,其服务器的内存占用不断增加. 分析 使用Windbg分析得到内存碎片化严重,其中包含了非常大的空闲空间,最大的一块竟然有150M,真正使用的空间其实很小 ...

  7. 23设计模式(3):Abstract Factory模式

    定义:要创建一组相关或依赖对象提供一个接口,而你并不需要指定其具体类别. 类型:创建一个类模型 类图: 抽象工厂模式与工厂方法模式的差别 抽象工厂模式是工厂方法模式的升级版本号,他用来创建一组相关或者 ...

  8. 基于j2ee的程序代写MVC架构

    人力资源管理系统 完成系统静态页面设计,页面数量不少于10个,页面需用CSS进行美化,并为需要验证的信息利用JavaScript提供客户端验证.要求至少包含部门信息及部门内员工信息的添加.修改.删除和 ...

  9. 程序员之---C语言细节22(函数返回指针注意事项&lt;悬空指针&gt;、查看进程能够分配的内存大小)

    主要内容:函数返回指针注意事项<悬空指针>.查看进程能够分配的内存大小 #include <stdio.h> char * favorite_fruit() { static ...

  10. Swing-email(转)

    项目结构: 运行效果: 如果你感兴趣,请不要那我的邮箱做测试!!!! ========================================================== 下面是代码部 ...