java基础8:GUI

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一、概述

GUI全称Graphical User Interfaces,译为图形用户户界面,又称为图形用户接口,GUI指的就是采用图形方式显示的计算机操作用户界面。

不过java在GUI上并没有太大优势,java的优势还是在于网络,这里作为了解即可,就不深入探讨了。

实现GUI的有两个必不可少的条件:组件和事件

java将关于界面的组件封装为对象,放在了两个包中:java.Awt和javax.Swing。

------Awt包:Abstract Window Toolkit,即抽象窗口工具包。要调用本地系统方法实现功能,属重量级控件。

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

二、awt包

\

1,Container(容器)和Component(组件)的关系

AWT中的两个核心类是Container(容器)和Component(组件)

java的图形用户界面的最基本组成部分是Component,Component类及其子类的对象用来描述以图形化方式显示在屏幕上并能与用户进行交互的GUI元素,例如:一个按钮,一个标签等。

一般的Component对象不能独立的显示出来,必须将“放在”某一的Container对象中才可以显示出来

Container是Component子类,Container子类对象可以“容纳”别的Component对象,也可以被当做Component对象添加到其他Container对象中。

Container对象可使用方法add()向其中添加其他Component对象。

如果还不懂的话,没关系,我再简单的说

无论容器(container)还是按钮(button)还是标签(label)都是组件,而容器中能够添加其他的组件。

2,Window与pannel

a,Window:其对象表示自由停泊的顶级窗口

b,Panel:其对象可作为容纳其它Component对象,但不能独立存在,必须被添加到其他Container中(如Window或Applet)

3,Frame:

Frame是Window的子类,由Frame或其子类创建的对象为一个窗体

4,举例:

<span style="font-size:18px;">		Frame f = new Frame("测试窗体");
		f.setLayout(new FlowLayout());
		f.setVisible(true);
		f.setBounds(600, 200, 500, 400);
		Button b = new Button("一个按钮");
		f.add(b);</span>

三、布局管理器

Java是跨平台运行的,但是不同的平台对于点及坐标的定义不完全相同。而且屏幕的解析度分辨率不同也会造成位置的变化,为了确保每个组件的相对位置和大小以及外观,java就设计了布局管理器。

1,布局管理器分类:

FlowLayout:浮动布局管理器

BorderLayout:边框布局管理器

GridLayout:网格布局管理器

CardLayout:卡片布局管理器

GridBagLayout:网格包布局管理器

如果大家做过web开发的话就会感到java的布局管理有点象网页的布局,其实网页也是在不同平台,不同分辨率的电脑上运行,从这点来说和java确实挺像的。

2,FlowLayout

是Panel容器的默认管理器,其组件浮动在容器中,它的放置规律是从上到下,从左到右。

<span style="font-size:18px;">public class FrameFlow {
	public static void main(String[] args) {
		// 创建一个框架
		Frame f = new Frame("Test");
		// 设置窗体大小
		f.setSize(400, 300);
		// 设置窗体显示位置
		f.setLocation(100, 100);

		f.setBackground(Color.orange); // 窗体背景色
		f.setVisible(true); // 窗体可见
		f.setLayout(new FlowLayout());// 设置浮动布局方式
		for (int i = 0; i < 15; i++) {
			f.add(new Button("btn" + i));
		}
	}
}</span>

3,BorderLayout

布置容器的边框布局,可以对容器组件进行安排,并调整其大小,使其符合五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST、CENTER,若只有一个组件,默认位置为Center,是Window、Frame和Dialog的默认布局管理器。

<span style="font-size:18px;">public static void main(String args[]){
        Frame f;
        f=new Frame("Border Layout");
        Button bn=new Button("北");
        Button bs=new Button("南");
        Button bw=new Button("西");
        Button be=new Button("东");
        Button bc=new Button("中");
        f.add(bn,BorderLayout.NORTH);
        f.add(bs,BorderLayout.SOUTH);
        f.add(bw,BorderLayout.WEST);
        f.add(be,BorderLayout.EAST);
        f.add(bc,BorderLayout.CENTER);  

        f.setSize(200,200);
        f.setVisible(true);
        }  </span>

其他的几种布局实现方式也都差不多,我就不一一写代码了,大家可以自己去试试。

四、事件监听机制

事件监听机制的组成:

事件:用户在界面上的某一个操作,通常使用各种输入设备,如鼠标、键盘等。

事件源:产生事件的组件,例如在一个按钮上的单击就是事件源

监听器:包含事件处理器,负责检查事件是否发生,若发生则激活事件处理器对其处理

事件处理:引发事件后的处理方式。

举例:

<span style="font-size:18px;">	public static void main(String[] args) {
		Frame f = new Frame("测试窗体");
		f.setLayout(new FlowLayout());
		f.setVisible(true);
		f.setBounds(600, 200, 500, 400);
		Button b = new Button("一个按钮");
		f.add(b);

		/****************添加事件监听机制**************/
		//添加关闭按钮
		f.addWindowListener(new WindowAdapter() {
			//若用子类实现WindowListener接口,就需要覆盖其中的7个方法,可只用到其中的关闭动作,其他动作未用到,但却必须重写全部。
			//因为WindowLister的子类WindowAdapter(适配器)已经实现此接口,并覆盖了其中所有方法。
			//那么只需继承WindowAdapter,覆盖需要的方法即可。
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});

		//添加按钮点击事件
		b.addActionListener(new ActionListener() {
			//由于ActionListerer接口只实现了一个方法,所以不需要适配器,没有**Adapter类,
			//但是若实现方法2个以上则肯定有**Adapter
			private int num  = 0;
			@Override
			public void actionPerformed(ActionEvent e) {
				num++;
				System.out.println("点击了一次button" + num);
			}
		});
	}</span>

注:这里事件添加使用的是匿名内部类,如果你对匿名内部类不清楚的话,请看我以前的文章

http://blog.csdn.net/jin870132690/article/details/41597143#t3

五、最后

关于swing的知识我就不介绍了,用swing包中可以实现可视化编程,有过.net开发经验的人应该了解,拖拖拽拽的就把界面弄好了,非常方便,有兴趣的可以自己去尝试一下。

界面是给用户看的,其实用户关心的很大一部分还是界面漂不漂亮,要想做一款深受大家好评的软件,无论如何界面的美化都是必不可少的。

,

时间: 2024-10-18 15:32:21

java基础8:GUI的相关文章

黑马程序员——【Java基础】——GUI(图形用户界面)

一.概述 1.GUI(GraphicalUser Interface):又称图形用户界面,是计算机用户与计算机交互的一种方式. 2.用户与计算机交互的方式有两种:GUI和CLI. (1)GUI(Graphical User Interface):图形用户接口,用图形方式,来显示计算机操作界面,方便直观. (2)CLI(Command LineUser Interface):命令行用户接口,即常见的Dos命令行操作,须记住一些命令,操作不直观. 3.Java提供的GUI对象都存在于java.Awt

黑马程序员——java基础---GUI、正则表达式

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.GUI概述 GUI(GraphicalUser Interface): 又称图形用户界面,是计算机用户与计算机交互的一种方式. 用户与计算机交互的两种方式: 1.GUI(Graphical User Interface):图形用户接口,用图形方式,来显示计算机操作界面,方便直观. 2.CLI(Command LineUser Interface):命令行用户接口,即常见的Dos命令行操作,

java基础学习总结——GUI编程(二)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——GUI编程(二) 一.事件监听 测试代码一: 1 package cn.javastudy.summary; 2 3 import java.awt.*; 4 import java.awt.event.*; 5 6 public class TestActionEvent { 7 public static void main(String args[]) { 8 Frame f = new Frame("

java基础学习总结——GUI编程(一)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——GUI编程(一) 一.AWT介绍 所有的可以显示出来的图形元素都称为Component,Component代表了所有的可见的图形元素,Component里面有一种比较特殊的图形元素叫Container,Container(容器)在图形界面里面是一种可以容纳其它Component元素的一种容器,Container本身也是一种Component的,Container里面也可以容纳别的Container. Cont

Java基础复习笔记系列 十 GUI

Java基础复习笔记系列之 GUI 1. 2.

java基础学习——26、GUI

GUI(Graphical User Interface)提供了图形化的界面,允许用户以图形的方式与系统进行互动.在GUI推广之前,用户通常要以文本命令的方式来控制计算机.GUI直观的将计算机的功能呈现给用户,降低了用户使用计算机的门槛.苹果和微软是GUI方面的先驱(虽然他们都一定程度上抄袭了Xerox),GUI也为这两位PC王者带来了丰厚的市场回报. 早期Mac GUI GUI需要操作系统和硬件的支持.因此,GUI编程往往要处理移植性的问题.Java的GUI编程有相对比较好的可移植性.然而,随

Java基础】并发 - 多线程

Java基础]并发 - 多线程 分类: Java2014-05-03 23:56 275人阅读 评论(0) 收藏 举报 Java 目录(?)[+] 介绍 Java多线程 多线程任务执行 大多数并发应用程序时围绕执行任务(task)进行管理的:所谓任务就是抽象的,离散的工作单元. 围绕执行任务来管理应用程序时,第一步是要指明一个清晰的任务边界.大多数应用服务器程序都选择了下面这个自然的任务辩解:单独的客户请求: 任务时逻辑上的单元: 任务 Runnable 表示一个任务单元(java.lang)

第1天:了解Java基础知识

Java的优势 1. 简单 不像C或者C++语言,Java中省去了对指针的操作.但是,Java中并没有省去指针,代替指针的是一种新的变量--引用,引用也是保存一个对象的内存地址. 2.方便 Java虚拟机自带垃圾回收器,能够自动回收内存资源.而C和C++语言,需要开发人员手动进行内存资源回收. 3.安全 不支持指针操作 4.平台无关性 Java语言是跨平台的,一次编译,到处运行. 而且,不同平台,C语言中数据类型所占的位数是不同的,而Java语言中,数据类型所占的位数是固定的. 5.面向对象 J

Java基础Day1

Java基础第一天 1.1基础常识 1. 软件开发 软件,即一系列按照特定顺序组织的计算机数据和指令的集合.有系统软件和应用软件之分.    系统软件:系统软件系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作.系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的.比如我们讲的window,linux,mac系统    应用软件:应用软件应用软件是为了某种特定的用途而被开发的软件.它可以是一个特定的程序,比如一个图像浏览器.也可以是一组功能