GUI

GUI的各种元素(如:窗口,按钮,文本框等)由Java类来实现

1.AWT

使用AWT所涉及的类一般在java.awt包及其子包中

AWT(Abstract Window Toolkit)包括了很多类和接口,

用于Java Application 的GUI(Graphics User Interface 图形用户界面)编程

Container和Component是AWT中的两个核心类

1.1 Frame

1、Frame是Windows的子类,由Frame或其子类创建的对象为一个窗体。

  2、Frame的常用构造方法:

      1)Frame()

      2)Frame(String s)创建标题栏为字符串s的窗口。

setBounds(int x,int y,int width,int height)
//设置窗体位置和大小,x,y是左上角坐标,
//width和height是宽度和高度 setSize(int width,int height)
//设置窗体的位置,x,y是左上角坐标 setLocation(int x,int y)
//设置窗体的大小,width和height分别是宽度和高度。 setBackground(Color c)
//设置背景颜色,参数为Color对象。 setVisible(boolean b)
//设置是否可见。 setTitle(String name) String getTitle()
setResizable(boolean b)
//设置是否可以调整大小。

1.2 Panel

  1、Panel对象可以看成可以容纳Compoent的空间

  2、Panel对象可以拥有自己的布局管理器

  3、Panel类拥有从其父类继承来的

setBounds(int x,int y,int width,int height)
setSize(int width,int height)
setLocation(int x,int y)
setBackground(Color c)
setLayout(LayoutManager mgr)等方法。

  4、Panel的构造方法为:

Panel()使用默认的FlowLayout类布局管理器初始化。
Panel(LayoutManager layout)使用指定的布局管理器初始化。


2. 布局管理器

2.1综述

Java语言中,提供了布局管理器类的对象可以管理

  1)管理Component在Container中的布局,不必直接设置Component位置和大小。

  2)每个Container都有一个布局管理器对象,当容器需要对某个组件进行定位或判断其大小尺寸时,

  就会调用其对应的布局管理器,调用Container的setLayout方法改变其布局管理器对象。

Awt提供了5中布局管理器类:

  FlowLayout    BorderLayout    GridLayout     CardLayout    GridBagLayout

2.2 介绍

2.2.1 BorderLayout布局管理器

1)BorderLayout是Frame类的默认布局管理器

2)BorderLayout将整个容器的布局划分成

东(EAST)西(WEST)南(SOUTH)北(NORTH)中(CENTER)五个区域,

组件只能被添加到指定的区域。

3)如不指定组件的加入部位,则默认加入到CENTER区。

4)每个区域只能加入一个组件,如加入多个,则先前加入的会被覆盖

2.3 总结

  1、Frame是一个顶级窗口,Frame的缺省布局管理器为BorderLayout
  2、Panel无法单独显示,必须添加到某个容器中。
  3、Panel的缺省布局管理器为FlowLayout。
  4、当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器。
  5、使用布局管理器时,布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件大小和位置属性,如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖。
  6、如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为:setLayout(null)



3.事件

3.1 事件监听

3.2 源码

/*  范例名称:Java事件处理举例
* 源文件名称:TestActionEvent.java
* 要 点:
* 1. Java事件处理机制
* 2. 事件源、事件监听器概念及作用
* 3. 如何在一个现有组件上注册监听器
*/ import java.awt.*;
import java.awt.event.*; public class TestActionEvent {
public static void main(String args[]) {
Frame f = new Frame("Test");
Button b = new Button("Press Me!");
Monitor bh = new Monitor();
b.addActionListener(bh);
f.add(b,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
} class Monitor implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("a button has been pressed");
}
}
/*  范例名称:Java事件处理举例
* 源文件名称:TestActionEvent2.java
* 要 点:
* 1. 一个事件源组件上可以同时注册多个监听器
* 2. 一个监听器对象可以同时注册到多个事件源组件上
* 3. 事件源的信息可以随它所触发的事件自动传递到所有注册过的监听器
*/ import java.awt.*;
import java.awt.event.*;
public class TestActionEvent2 {
public static void main(String args[]) {
Frame f = new Frame("Test");
Button b1 = new Button("Start");
Button b2 = new Button("Stop");
Monitor2 bh = new Monitor2();
b1.addActionListener(bh);
b2.addActionListener(bh);
b2.setActionCommand("game over");
f.add(b1,"North");
f.add(b2,"Center");
f.pack();
f.setVisible(true);
}
} class Monitor2 implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("a button has been pressed," +
"the relative info is:\n " + e.getActionCommand());
}


4. 类

4.1 TextField类

  1、java.awt.TextField类用来创建文本框对象。

  2、TextField有如下常用方法:

TextField()
TextField(int columns)
TextField(String text)
TextField(String text, int columns)
public void setText(String t)
public String gerText()
publicvoid setEchoChar(char c)设置回显字符
public void setEditable(boolean b)
public boolean isEditable()
public void setBackground(Color C)
public void select(int selectionStart,int selectionEnd)
public void selectAll()
public void addActionListener(ActionListener l)
添加动作监听器。
/*  范例名称:Java事件处理举例
* 源文件名称:TestActionEvent.java
* 要 点:
* 1. Java事件处理机制
* 2. 事件源、事件监听器概念及作用
* 3. 如何在一个现有组件上注册监听器
*/ import java.awt.*;
import java.awt.event.*; public class TestActionEvent {
public static void main(String args[]) {
Frame f = new Frame("Test");
Button b = new Button("Press Me!");
Monitor bh = new Monitor();
b.addActionListener(bh);
f.add(b,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
} class Monitor implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("a button has been pressed");
}
}

4.2 Graphics类

每个Component都有一个paint(Graphics g)用于实现绘图目的,

每次重画该Component时都自动调用paint方法。

Graphics类中提供了许多绘图方法,Graphics类 Paint方法

import java.awt.*;

public class TestPaint {
public static void main(String[] args) {
new PaintFrame().launchFrame();
}
} class PaintFrame extends Frame { public void launchFrame() {
setBounds(200,200,640,480);
setVisible(true);
} public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.red);
g.fillOval(50, 50, 30, 30);
g.setColor(Color.green);
g.fillRect(80,80,40,40);
g.setColor(c);
} }

4.3 鼠标事件适配器

抽象类java.awt.event.MouseAdapter实现了MouseListener,

可以使用其子类作为MouseEvent的监听器,只要重写其相应的方法即可。

  对于其他的监听器,也有对应的适配器。

  使用适配器可以避免监听器类定义没有必要的空方法。

  GUI/MyMouseAdapter.java 鼠标适配器

  repaint - update() - paint();

4.4 Window事件

  1、Window事件所对应的事件类为WindowsEvent,所对应的事件监听接口为WindowListener。

  2、WindowListener定义的方法有:

public void windowsOpened(WindowEvent e)
public void windowClosing(WindowsEvent e)
public void windowClosed(WindowEvent e)
public void windowIconified(WindowEvent e)
public void windowDeiconified(WindowEvent e)
public void windowActivated(WindowEvent e)
public void windowDeactivated(WindowEvent e)

  与WindowListener对应的适配器为WindowAdapter。
      GUI/TestWindowClose.java
      GUI/TestAnonymous2.java

import java.awt.*;
import java.awt.event.*;
public class TestWindowClose {
public static void main(String args[]) {
new MyFrame55("MyFrame");
}
}
class MyFrame55 extends Frame {
MyFrame55(String s) {
super(s);
setLayout(null);
setBounds(300, 300, 400, 300);
this.setBackground(new Color(204, 204, 255));
setVisible(true);
//this.addWindowListener(new MyWindowMonitor()); this.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
setVisible(false);
System.exit(-1);
}
}); }
/*
class MyWindowMonitor extends WindowAdapter {
public void windowClosing(WindowEvent e) {
setVisible(false);
System.exit(0);
}
}
*/
}

30255Java_5.5 GUI的更多相关文章

  1. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  2. 如何通过Git GUI将自己本地的项目上传至Github

    最近在学习node.js和react,顺便复习了下AngluarJS相关的东西,写了些小demo想放在GitHub上,之前仅限于只申请了GitHub账号从没用过,今天花半天时间查资料认真学习Githu ...

  3. git图像化界面GUI的使用

    GIT学习笔记 一.        基础内容 1.git是一个版本控制软件,与svn类似,特点是分布式管理,不需要中间总的服务器,可以增加很多分支. 2.windows下的git叫msysgit,下载 ...

  4. egret GUI 和 egret Wing 是我看到h5 最渣的设计

    一个抄袭FlexLite抄的连自己思想都没有,别人精髓都不懂的垃圾框架.也不学学MornUI,好歹有点自己想法. 先来个最小可用集合吧: 1. egret create legogame --type ...

  5. [C#] 走进异步编程的世界 - 在 GUI 中执行异步操作

    走进异步编程的世界 - 在 GUI 中执行异步操作 [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5877042.html 序 这是继<开始接 ...

  6. 1.JAVA之GUI编程概述

          下列内容为本人看毕向东老师java视频教程学习笔记! JAVA GUI图形用户界面编程: Windows 操作系统提供两种操作方式:                             ...

  7. 2.JAVA之GUI编程布局

    布局管理器 容器中的组件排放方式,就是布局 常见的布局管理器: **************************************************** 1.FlowLayout(流式 ...

  8. 3.JAVA之GUI编程Frame窗口

    创建图形化界面思路: 1.创建frame窗体: 2.对窗体进行基本设置: 比如大小.位置.布局 3.定义组件: 4.将组件通过add方法添加到窗体中: 5.让窗体显示,通过setVisible(tur ...

  9. 4.JAVA之GUI编程事件监听机制

    事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件. ...

随机推荐

  1. 如何使用egit将本地代码提交到托管平台

    本文将讲述如何使用eclipse中的egit插件,将代码提交到git托管平台. Eclipse版本:4.7.0 自带egit插件 云端托管平台:华为软件开发云 1.本地git工具安装&环境配置 ...

  2. Java--面试通关要点

    这里,笔者结合自己过往的面试经验,整理了一些核心的知识清单,帮助读者更好地回顾与复习 Java 服务端核心技术.本文会以引出问题为主,后面有时间的话,笔者陆续会抽些重要的知识点进行详细的剖析与解答. ...

  3. R 语言学习(二)—— 向量

    1. 入门 将摄氏度转化为华氏度 >> 27*1.8+32 [1] 80.6 [1]:表示数字的向量索引号,在 R 语言中任何一个数字都看作一个向量. 向量化 >> temp ...

  4. Android的APK文件的反编译方法【转】

    实用的收藏一下. 来自:http://www.dewen.org/q/711/%E8%AF%B7%E6%95%99Android%E7%9A%84APK%E6%96%87%E4%BB%B6%E7%9A ...

  5. Mac OS X通过结合80port

    Mac OS X 由于要绑定80port须要ROOT权限, 可是假设用root权限启动eclipse或tomcat又会造成, 启动创建的各类文件是root的,普通用户无法删除. 为此. 我们能够通过p ...

  6. [AC自己主动机+可能性dp] hdu 3689 Infinite monkey theorem

    意甲冠军: 给n快报,和m频率. 然后进入n字母出现的概率 然后给目标字符串str 然后问m概率倍的目标字符串是敲数量. 思维: AC自己主动机+可能性dp简单的问题. 首先建立trie图,然后就是状 ...

  7. C# WPF 中用代码模拟鼠标和键盘的操作

    原文:C# WPF 中用代码模拟鼠标和键盘的操作 原文地址 C#开发者都知道,在Winform开发中,SendKeys类提供的方法是很实用的.但是可惜的是,在WPF中不能使用这个方法了. 我们知道,在 ...

  8. 前端PS常用切图技巧

    前言:前端涉及到的 ps 操作不算复杂,基本上就是切图,本文总结了常用的几种切图技巧. 工具:photoshop cs6 . photoshop cc 1. 传统切图 01 这是最笨的一种方法,核心就 ...

  9. [WPF疑难] 如何限定ListView列宽度

    原文:[WPF疑难] 如何限定ListView列宽度 [WPF疑难] 如何限定ListView列宽度                                            周银辉 今天 ...

  10. java中==和equels的区别

    起初接触java的时候这个问题还是比较迷茫的,最近上班之余刷博客的时候看了一些大神写的文章,自己也来总结一下,直接贴代码: package string; public class demo1 { p ...