在实际应用中,我们见到的许多应用界面都属于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. Python Subprocess Popen 管道阻塞问题分析解决

    http://ju.outofmemory.cn/entry/279026 场景:1>不断播放mp3文件: 2>使用订阅发布模式保持tcp长连接,从服务器接收信息 造成程序hang死,但是 ...

  2. codeforcess水题100道

    之所以在codeforces上找这100道水题的原因是为了巩固我对最近学的编程语言的掌握程度. 找的方式在codeforces上的PROBLEMSET中过的题最多的那些题里面出现的最前面的10个题型, ...

  3. django rest framwork教程之 viewsets和routers

    ViewSets 和Routers REST框架包括一个用于抽象处理的ViewSets,允许开发人员集中精力对API的状态和交互进行建模,并根据常见约定自动处理URL构造. Viewset 类和 Vi ...

  4. PON系统基础知识简介

    一  PON基础知识 1.1 PON技术概念 PON(Passive Optical Network)即无源光网络,一种基于点到多点(P2MP)拓朴的技术.“无源”指ODN(光分配网络)不含有任何电子 ...

  5. H5 password自动记录取消

    最近完成一个项目时需要取消谷歌浏览器的密码自动填充功能,为了用户方便,大多浏览器都有保存某个网站的密码并在后面再打开这个网站且需要输入密码的时候自动填充.这个功能是方便,但是我们有时候不需要使用这个功 ...

  6. package.json字段全解(转)

    Name 必须字段. 小提示: 不要在name中包含js, node字样: 这个名字最终会是URL的一部分,命令行的参数,目录名,所以不能以点号或下划线开头: 这个名字可能在require()方法中被 ...

  7. LeetCode 23 Merge k Sorted Lists(合并k个有序链表)

    题目链接: https://leetcode.com/problems/merge-k-sorted-lists/?tab=Description Problem: 给出k个有序的list, 将其进行 ...

  8. Artech的MVC4框架学习——第四章Model元数据的解析

    总结: 第一Model元数据是针对 数据类型的一种表述信息. 第二Model元数据作用:控制数据类型本身及其成员,通过相应的特性,在view中 为绑定的数据(Model)实现模版化的html呈现. 第 ...

  9. Jenkins-Build Monitor View

    现在上了jenkins的任务越来越多,查看起来很不方便,想搞个大视图,刚好jenkins本身支持这个功能. 功能: 一个独特的View, 可以将指定的Job,显示出来,当Job很多时,效果很好看 下载 ...

  10. iOS自带分享

    NSArray *activityItems; if (self.sharingImage != nil) { activityItems = @[self.sharingText, self.sha ...