在实际应用中,我们见到的许多应用界面都属于GUI图形型用户界面。如:我们点击QQ图标,就会弹出一个QQ登陆界面的对话框。这个QQ图标就可以被称作图形化的用户界面。

其实,用户界面的类型分为两类:Command line UserInterface (命令行用户接口)

•    就是常见的Dos命令行操作。

•    需要记忆一些常用的命令,操作不直观。

举例:

•    比如:创建文件夹,或者删除文件夹等

例如MS-DOS

二、图形用户界面(GUI,Graphical User Interface )是指以图形化方式与用户进行交互的程序运行界面,例如MicrosoftWindows、Word等。

优点:更友好、更丰富,且提供灵活、强大的人机交互功能,成为当前应用程序设计的主流。

在GUI程序设计中,组件(Component)是GUI的基本组成元素,凡是能够以图形化方式显示在屏幕上并能与用户交互的对象均为组件。

另外,在JDK的java.awt包中定义了多种GUI组件类,如Window、Menu、Button、Label、TextField、Scrollbar等。

这些抽象类,定义了GUI 组件的基本特性和功能

由上图可以看出,GUI中的组件可分为:

其中,需要注意的是:

  1. Container类描述了容器组件的所有性质;

2.它继承于Component类,因此容器类对象本身也是一个组件,具有组件的所有性质,但反过来组件却不一定是容器;

3.控制组件要想显示出来必须放置在容器组件中

其中,容器类型的组件在java.awt包下可以见到。这里,需要注意在AWT中存在两种主要的容器类型:

1. java.awt.Window
描述的是一个没有边框和菜单栏、可自由停靠的顶层容器(是指不允许将其包含于其他的容器中),一般不直接使用该类,而是使用其子类Frame

2.java.awt.Panel
最简单而常用的容器,可作为容器包含其他组件,但不能独立存在,必须被添加到其它容器中。

案例:

  示例1:第一个GUI应用程序。

importjava.awt.*;

classTestFirstFrame{

      public static void main(String args[]){

       Frame frame=new Frame("第一个图形用户界面应用程序");//容器

       Label lbl=new Label("这是我的第一个图形用户界面!");//控制组件

       lbl.setBackground(Color.pink);

       frame.setLayout(new FlowLayout());

       frame.add(lbl);       //将控制组件添加到容器中

       frame.setSize(200,100);

       frame.setVisible(true);

      }

}

  

应注意的是:

1. Frame 默认的大小为刚好容纳下标题条和最小(大)化、关闭按钮,setSize()可设置Frame大小。

2.Frame窗口默认是不可见的,可使用setVisible(true|false)方法使之可见或隐藏。

3.组件在容器中的摆放位置由布局管理器决定,Frame使用setLayout()方法可以设置窗口的布局。

4.FlowLayout—流式布局管理,特点是组件在容器中按照加入次序逐行定位,行内从左到右,一行排满后换行。

实例2.容器组件Panel的使用。

Frame frame=new Frame("容器Panel的使用");

Panel panel=new Panel();

Button btn=new Button("确定");

panel.setBackground(Color.cyan);

panel.setSize(100,50);

panel.setLocation(40,40);

frame.setLayout(null);

frame.add(panel);

panel.add(btn);

frame.setLocation(80,100);

frame.setSize(200,100);

frame.setVisible(true);

这里,应注意:

1.   frame的默认布局理器被取消,人工设置了panel的尺寸大小和在容器中的位置;

2.setSize()方法用于设置组件尺寸大小,即宽度和高度,单位为像素;

3.setLocation()方法用于设置组件在容器中的位置,即组件的左上角,即组件的左上角顶点坐标,单位也是像素。

4.各个GUI容器都拥有自己的坐标系统(计算机的显示器屏幕也是一种GUI容器)

位置关系如图:

通过上图我们可以看到,布局在GUI程序设计中的地位是十分重要的。在GUI程序设计中容器对其中所包含组件的排列方式,包括组件的位置和大小的设定,被称为容器的布局(Layout)。它是指系统事先定义好的若干容器布局效果,使用它们可以方便地实现组件在容器的布局管理,并能够满足各种常规需要。例如,FlowLayout等。

注意:

 每一个容器都有默认的布局管理器,在创建一个容器对象时,同时也会创建一个相应的默认布局管理器对象,用户也可以随时为容器创建和设置新的布局管理器。 
方法:

 

容器对象.setLayout(布局管理器对象) 
布局管理器  容器对象.getLayout()

 因此,了解常用布局管理器就显得十分重要

FlowLayout:流式布局,是Panel(及其子类)类型容器的默认布局管理器类型。

布局效果:组件在容器中按照加入次序逐行定位,行内从左到右,一行排满后换行。组件按原始大小进行显示。

构造方法
public FlowLayout()//默认居中对齐,5个像素的水平和垂直间距
public FlowLayout(int align)//指定对齐方式
public FlowLayout(int align,int hgap,int vgap)//组件的水平和垂直间距

其中,对齐方式可以使用FlowLayout类中定义静态常量来设定,主要包括:
FlowLayout.LEFT     左对齐
FlowLayout.RIGHT    右对齐
FlowLayout.CENTER     居中对齐

示例1:流式布局的使用。

f.setLayout(new FlowLayout());

f.add(button1);

f.add(button2);

f.add(button3);

   效果如图:

注意:

 当容器f的尺寸被重置时,其中组件的位置也随之进行了调整,但组件的尺寸维持不变。

BorderLayout:边界布局,是Window及其子类类型容器的默认布局管理器。

布局效果:将整个容器范围划分成East、West、South、North、Center五个区域,组件只能被添加到指定的区域。

   如图:

值得注意的是:

  1. 每个区域只能加入一个组件,如加入多个,则先前加入的组件会被遗弃 。

  2. 在使用边界布局的容器中,组件的尺寸也被布局管理器强行控制,即与其所在区域的尺寸相同。

构造方法
public BorderLayout()
public BorderLayout(int hgap,int vgap)

示例2:BorderLayout的使用。

f.setLayout(new BorderLayout());//该语句去掉也可,Frame默认布局为BorderLayout

//向容器的不同方位添加组件,也可使用BorderLayout中定义的String常量来表示,例,NORTH、SOUTH、WEST、EAST等。

f.add(btnNorth,"North");

f.add(btnSouth,"South");

f.add(btnWest,"West");

    f.add(btnEast,"East");

f.add(btnCenter,"Center");//如不指名组件的加入位置,则默认加入到Center区域。

注意:

1.当容器的尺寸发生变化时,其中各组件相对位置不变,尺寸随所在区域进行缩放调整;

2.调整原则:北、南两个区域只能在水平方向缩放(宽度可调),东、西两个区域只能在垂直方向缩放(高度可调),中部区域都可缩放。

在实际学习过程中,我们需要了解Conpoment类的基本属性和操作方法:

Java GUI程序设计的更多相关文章

  1. java GUI,贷款服务器

    本习题来自<java语言程序设计--进阶篇>第30章,网络编程的习题. 题目描述:为一个客户端编写一个服务器.客户端向服务器发送贷款信息(年利率.贷款年限和贷款总额).服务器计算月偿还额和 ...

  2. java GUI之基本图形

    1.为了支持图形用户界面程序设计,java1.0的标准类库中包含一个抽象窗口工具箱(Abstract Window Toolkit,AWT). 这个工具箱极不成熟,其编程模型也不是面向对象的,有很大的 ...

  3. 20155212 实验二 Java面向对象程序设计

    20155212 实验二 Java面向对象程序设计 单元测试 三种代码 用编程去解决问题,必须学会写三种码: 伪代码 产品代码 测试代码 例: MyUtil 类解决一个百分制成绩转成"优.良 ...

  4. 20155319 实验二 Java面向对象程序设计

    20155319 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 (一) ...

  5. 2016-2017-2 20155339 《Java面向对象程序设计》实验三敏捷开发与XP实践实验报告

    2016-2017-2 20155339 <Java面向对象程序设计>实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验内容 一.在IDEA中使用工具(Co ...

  6. Java GUI 图书管理系统

    01 概述 一款功能强大的图书馆管理系统,功能齐全,小白/大学生项目实训,学习的不二之选. 02 技术 此系统使用 java awt 实现.java.awt是一个软件包,包含用于创建用户界面和绘制图形 ...

  7. 再见!【JAVA GUI】

    1.GUI概述 图形用户界面(Graphical User Interface,简称 GUI,又 称图形用户接口)是指采用图形方式显示的计算机操作用户界面. java作为一种面向对象的程序设计语言,它 ...

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

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

  9. java基础学习03(java基础程序设计)

    java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...

随机推荐

  1. Linux怎样创建FTP服务器--修改用户默认目录

    在创建FTP服务器之有先命令: ps -ef |grep vsftpd 查一下系统有没有安装vsftpd这个服务器,如果出现如下图所示的界面说明没有安装.     然后再执行:yum install ...

  2. ISD9160学习笔记04_ISD9160音频编码代码分析

    前言 录音例程涉及了录音和播放两大块内容,上篇笔记说了播放,这篇就来说说录音这块,也就是音频编码这部分功能. 上篇笔记中的这段话太装逼了,我决定再复制下,嘿嘿. “我的锤子便签中有上个月记下的一句话, ...

  3. 初步总结javascript中学习DOM之前的知识

    嘿嘿,又到了周末时间,周六其实就是总结这周的学习的,记得周二周三刚开始接触javascript时间,还是不知道怎么学习的,就感觉找不到方向,那时间学习的只是总结了一些简单的定义或者是学习结构,今天就把 ...

  4. No.4 PyQt学习(页面跳转)

    先定义了两个MainWindow进行跳转,但发现这样的话,从第二个Window无法跳转会第一个.代码如下: # -*- coding: utf-8 -*- import sys from PyQt4. ...

  5. mac下升级terminal/终端的subversion版本方法

    雖然現在程式碼管理已經以 Git 為主了,不過偶爾需要維護一些舊案子還是會用 SVN,懶得轉了. Mac OS 本身有內建 SVN,不過卻是 1.6 版,最近修改一個舊案子就有碰到 project 已 ...

  6. truncate表恢复

    Fy_Recover_Data 2014.03.07 更新 -- 现在可以从离线文件中恢复被Truncated的数据了 2014新版本的恢复思路 与 2012的不同 2014年是离线恢复 http:/ ...

  7. ERROR 1045 (28000): Access denied for user 'mycat'@'localhost' (using password: YES)

    创建用户: mysql> grant all on db1.* to mycat@'%' identified by '123456'; Query OK, 0 rows affected (0 ...

  8. [原]secureCRT 改变显示宽度

    1.首先全局设置:Options - Global Options - Terminal - Appearance - Maximumcolumns 最大只能设置成1024(推荐256),设置越大越占 ...

  9. C++的函数重载和main函数之外的工作

    今天被问到一个C++的函数重载问题,一下子没反应过来,这种基础的问题竟然忘记了,以下记录一下这些忘记的内容.     函数重载 函数重载的定义是:在相同的作用域中,如果函数具有相同名字而仅仅是形参表不 ...

  10. 23种设计模式之观察者模式(Observer)

    观察者模式又称为发布—订阅模式.模型—视图模式.源-监听器模式或从属者(dependents)模式,是一种对象的行为型模式.它定义了对象之间的一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相 ...