[JAVA_开课吧资源]第四周 图形用户界面程序设计

主题一 图形用户界面程序设计

» 图形用户界面概述

Java语言提供了大量支持GUI设计的类,如按钮、菜单、列表、特性框、对话框等组件类,同时也提供了包含窗口、面板等容器类。Java的抽象工具集AWT和Swing中包含了很多类以支持GUI的设计。设计和实现图形用户界面的主要任务包括下面两个层次:

  • 创建组成界面的各成分和元素,指定它们的属性和位置关系,根据具体需要布局排列,以构成图形用户界面的外观表现
  • 定义图形用户界面的事件和各界面元素所对不同事件的响应,以实现图形用户界面与用户间的交互功能

[请点击查看更多内容 转自百度百科]

» 组件

组件是Java图形用户界面最基本的组成部分,是一个以可视化的图形方式显示于屏幕上与用户进行交互的对象。Java中包含许多的基本组件,如按钮、标签、滚动条、列表、单选/复选框等等。

[请点击查看更多内容 转自无冬之夜的新浪博客]

» 容器

顾名思义,容器是用来容纳组件的。容器(Container)是Component类的子类,由Container类的子类和间接子类创建的对象均称为容器,容器本身也是一种组件,可以通过add()方法向容器中添加组件,也可以把一个容器添加到另一个容器中以实现容器的嵌套,容器具有组件的所有性质。

[请点击查看更多内容 转自风中百合的网易博客]

» AWT组件

AWT是API为Java程序提供的建立图形用户界面GUI工具集,AWT可用于Java Applet和Application中。它提供用户界面组件、事件处理模型、图形和图像工具、布局管理器等,可以进行灵活的窗口布局,与特定窗口的尺寸和屏幕分辨率无关。

java.awt包中提供了GUI设计所需的类和接口,主要包括组件、容器与布局管理器等相关概念。由java.awt包中的类创建的组件称为重组件,每创建一个组件时,都有一个相应的本地组件在为它工作,AWT组件设计原理是把与显示组件有关的许多工作和处理事件的工作交给相应的本地组件。基于重组件的GUI设计有许多不足之处,如同一程序在不同的平台可能有不同的外观呈现,使用AWT进行GUI设计会消耗大量的系统资源。

[请点击查看更多内容 转自晓丹新浪博客]

» Swing组件

Swing是以AWT为基础构建的,javax.swing包提供了更加丰富的、功能更强的Swing组件,它的大多数组件都是在AWT组件前面加一个“J”,Swing组件的用法与AWT基本相同,也使用AWT的事件处理机制,只是组件风格不同,同时也增加了一些原来没有的组件特性。Swing组件无需同位体,故称为轻组件。由于Swing组件在设计上和AWT完全不同,轻组件把与显示组件有关的许多工作和处理事件的工作交给相应的java程序完成,这些类被添加到Java的运行环境中,具有外观不依赖平台的功能特性,且具有更高的性能。

[请点击查看更多内容 转自CSDN博客zings的专栏]

» 组件与容器的关系

在Java中必须理解容器和组件两个基本概念,以及它们之间的关系。

  • Java把由Component类的子类或间接子类创建的对象称为一个组件
  • Java把由Container的子类或间接子类创建的对象称为一个容器
  • 可以向容器添加组件。Container类提供了一个public方法add(),一个容器可以调用这个方法将组件添加到该容器中
  • 调用removeAll()方法可以清除容器中的所有组件,调用remove(Component c)可以在容器中删除指定参数的组件
  • 每当容器添加新的组件或删除组件时,应该让容器调用validate()方法,以保证容器中的组件能正确显示出来
  • 容器本身也是一个组件,因此可以把一个容器添加到另一个容器中实现容器的嵌套

[请点击查看更多内容 转自百度文库]

» Frame框架

框架是Window类的直接子类,因而框架是窗口的一种,是顶级窗口。JFrame组件在Java的顶层窗口中可以独立使用,包含标题、边框、菜单等。框架是一个容器,可以在这个容器中放入其他一些图形用户界面组件,如按钮等,从而组成一个功能完善的程序。

[请点击查看更多内容 转自CSDN博客coolme的专栏]

» Panel面板

Panel面板类为Container类的子类,也是一种容器,可容纳其它组件(使用add()方法添加),但它不是顶层窗口,不能独立存在,必须被添加到其它容器中,所以一般创建一个Panel面板对象后,需将其放入Window和Frame中,这样才能看见Panel面板中的内容。

[请点击查看更多内容 转自facepp的CSDN博客]

» 文本和字体

不同的系统中安装了不同的字体,为了得到本系统中所有已安装的字体,可以通过GraphicsEnvironment类的getAvailableFontFamilyNames方法来实现,该方法返回一个字符串数组,数组内包含所有可用的字体名。从名称上可以看出,GraphicsEnvironment类用来描述用户系统的图形环境,可以通过GraphicsEnvironment类的静态方法getLocalGraphics Environment来得到该类的一个实例。

程序一般使用默认字体(字体名、字体风格、字体大小)来显示,但可以通过Font类对象来改变这些参数,字体风格有以下几种选项: Font.PLAIN(常规),Font.BOLD(加粗)Font.ITALIC(倾斜)

[请点击查看更多内容 转自ITeye技术网站]

» 字体颜色

可以设置自己想要的颜色,然后进行文本的显示及图形的绘制。Graphics类提供了与颜色相关的方法:

  • getColor--返回当前颜色设置
  • setColor--设置当前颜色,后续图形操作都将用该颜色

关于颜色的相关操作,除了采用Graphics类的setColor方法以外,还可以采用JFrame类的超类Component类的setBackground方法和setForeground方法。setBackground方法用于设置背景色,setForeground方法用于设置在组件上进行绘制的默认颜色。

有时在程序的运行过程中,希望使某部分的颜色稍稍加亮或变暗,这时可以使用Color类提供的brighter方法和darker方法

[请点击查看更多内容 转自Java中文网]

» 简单图形绘制

可以利用Graphics类提供的一些方法进行简单图形的绘制。如drawLine、drawPolyline、drawPolygon、drawArc。drawLine用来画线,drawPolygon可以实现多边形的绘制,draw Polygon的参数是多边形对象(Polygon),所以需要先定义一个Polygon对象,然后将点加入到该对象中,然后利用drawPolygon进行多边形的绘制。drawPolyline方法的作用与draw Polygon基本相同。区别在于drawPolygon将点(p1,p2…pn)依次相连,形成一个封闭区域。而drawPolyline只是依次连接p1和p2,p2和p3,……,pn-1和pn,并不连接pn和p1。如果想形成一个封闭区域,只需要将pn和p1设为同一个点即可。

[请点击查看更多内容 转自CSDN博客令狐冲的专栏]

» 事件处理原理

Java中定义了各种不同类型的事件类,用来描述各种类型的用户操作。这个过程将涉及三个主要概念:

  • 事件:事件是描述用户所执行的一个操作,所产生的一个行为
  • 事件源:事件是由事件源产生的,事件的产生者称为事件源,一般指产生事件的组件对象
  • 事件处理方法:负责解析处理事件的类的对象,用以实现和用户交互的方法

事件源拥有自己的方法,通过它向其注册事件监听器。事件监听器是一个类的实例,这个类实现了一个称为Listener-interface的特殊接口。当事件源产生一个事件以后,事件源就会发送通知给相应的事件监听器,监听器对象根据事件对象内封装的信息决定如何响应这个事件。

[请点击查看更多内容 转自北京市网友的新浪博客]

» 事件授权模型实现事件处理的主要步骤

  • 选择组件作为事件源,不同类型的组件会产生特定类型的事件
  • 定义要接收并处理某种类型的事件,注册相应的事件监听器类。通过调用组件方法向组件注册事件监听器。可以通过以下方法来注册监听器对象: eventSourceObject.addEventListener(eventListenerObject);
  • 实现监听器类的实例对象,据此作为事件的监听器对象
  • 事件源通过实例化事件类激发并产生事件,事件被传送给已经注册的一个或多个监听器,事件监听器在接收到事件消息后负责实现相应的事件处理方法

[请点击查看更多内容 转自CSDN博客haibingoy的专栏]

» AWT事件层次结构

(Key、Mouse)Event--(Container、Focus、Input、Paint、Window)Event--(Action、Adjustment、Component、Item、Text)Event--AWT Event--Event Object

[请点击查看更多内容 转自飞羽飞之猪的CSDN博客]

» Applet的生命周期

Applet的生命周期中有四个状态:初始态、运行态、停止态和消亡态。

Applet 根据执行过程中发生的事件来定义其生命周期。对于每个事件将自动调用一种方法。如: init() , 初始化时调用 ; start() ,调用init方法之后自动调用这个方法;stop() , 退出网页时停止执行Applet程序;paint(Graphics g),绘制Applet图形;destroy() ,离线时释放本对象及其相关的资源

[请点击查看更多内容 转自BlogJava]

» Applet 和Application的区别

Java Applet和Java Application在结构方面的主要区别表现在:

  • 运行方式不同
  • 运行工具不同
  • 程序结构不同
  • Java Applet程序可以直接利用浏览器或AppletViewer提供的图形用户界面,而Java Application程序则必须另外书写专用代码来营建自己的图形界面
  • 受到的限制不同

[请点击查看更多内容 转自yangxueyong的csdn博客]

» 焦点事件

同一时刻在同一个窗口内最多只能有一个组件拥有焦点。除了可以通过鼠标点击或通过TAB键进行组件间焦点的切换,还可以通过程序来控制焦点的切换,通过使用transferFocus方法,把焦点移动到TAB顺序中的下一个组件上。但并不是每个组件都能够接收焦点,例如标签组件就不能接收焦点。还可以使某些组件不能获得焦点,这需要重载isFocusTravers是able方法,使其返回false,从而使得该组件不能接收焦点。

[请点击查看更多内容 转自CSDN博客Gaowen_HAN的专栏]

» 键盘事件

KeyListener接口中有三个方法:

  • public void keyPressed(KeyEvent e)
  • public void keyReleased(KeyEvent e)
  • public void keyTyped(KeyEvent e)

当用户按下某个键时,就会生成一个名为KEYPRESSED的按键事件,松开键时,就会生成一个名为KEY RELEASE的按键事件。可以在实现了KeyListener接口的监听器类中用keyPressed方法和keyReleased方法对这些事件进行处理。不过它们只能处理原始的按键,而keyTyped方法可以处理由于按键所产生的一系列字符。

[请点击查看更多内容 转自knowsky网站]

» 鼠标事件

当用户点击一个鼠标按键后,会调用如下三个监听器方法:

  • mousePressed:鼠标键被按下时调用
  • mouseReleased:鼠标键被释放时调用
  • mouseClicked:合并上述两个事件为一次鼠标点击事件

以上三个方法在MouseListener接口中定义。

[请点击查看更多内容 转自 syhrobert1991的新浪博客]

» 内部类的概述

所谓内部类,就是定义于类内部的类,这就好比把人看做是一个类,人的身体中又有不同的器官,这时可以把每一个器官再看做是一个类,器官中的不同组织完成不同的功能,也就是不同的方法实现。内部类是一种非常有用的机制,通过内部类的定义,程序员将一些逻辑上相关的类组织在一起,并且通过内部类的使用可以很好地控制内部类的可见性。在java中,一个类被嵌套定义在另一个类中,那么这个类就被称为是内部类,包含内部类的类就被称为外部类。对于外部类来说,内部类相当于成员变量或者是方法。创建一个内部类和创建一个普通的类没有多大的区别,唯一不同的就是内部类是定义在类的内部。

匿名内部类:所谓的匿名内部类,就是没有名称的内部类

[请点击查看更多内容 转自百度百科]

» 布局设计

一个好的界面首先应该是布局合理的,Java提供了布局工具以支持用户界面元素的自动定位。布局管理器为容器规划布局,容器仅记录其所包含的组件,而布局管理器则用于管理组件在容器中的布局,负责管理容器中的各个组件的排练顺序、位置、组件大小等,当容器移动或改变大小时,应相应改变组件的大小和位置。Java里有六种布局管理器:

  • FlowLayout(顺序布局)
  • BorderLayout(边界布局)
  • GridLayout(网格布局)
  • BoxLayout(盒式布局)
  • CardLayout(卡片布局)
  • GridBagLayout(网格包布局)
  • null布局

[请点击查看更多内容 转自技术羊的新浪博客]

» 菜单

Java中,一般菜单格式包含菜单栏、菜单、菜单项等类组件,菜单放在菜单栏里,菜单项放在菜单里。

菜单创建步骤:

  • 创建一个菜单栏(JMenuBar/MenuBar)对象,将其添加到所建框架(JFrame/Frame)中
  • 创建菜单(JMenu或Menu)对象及其子菜单
  • 创建菜单项(JMenuItem或MenuItem)对象,并将其添加到菜单或子菜单对象中
  • 将菜单对象添加到菜单栏对象中

[请点击查看更多内容 转自如影随形的CSDN博客]

» Swing常用组件

文本组件、标签、按钮、单选按钮组件、复选框组件、列表框组件、组合框组件、滑块组件。

[请点击查看更多内容 转自风雨同舟的百度空间]

» Swing和AWT的区别

  • Swing为基于窗体的GUI应用开发设计,为java跨平台特性提供了卓越的支持.它完全没有本地代码,不受操作系统的影响,做到了真正的跨平台应用,甚至能够提供本地窗口系统不支持的其它特性.因此比AWT具有更强的实用性,同时比AWT程序拥有更加精致的外观感受
  • AWT只提供基本的组件,使很多设计变得复杂,且无法在不同的平台下保持显示风格的一致性.例如:如果建立一个按钮Button对象,就会有一个按钮(ButtonPeer)同其对象一起被建立,然后此按钮对象会请求底层操作系统创建一个真正的按钮.即在Windows NT 上执行,那么创建的就是Windows NT按钮,Linux 上执行,那么创建的就是Linux按钮.因此AWT组件外观会受到底层操作系统的影响

[请点击查看更多内容 转自CSDN博客shenlongenjoyjava的专栏]

» Java Applet介绍

Applet可以翻译为小应用程序,Java Applet就是用Java语言编写的一些小应用程序,它们可以直接嵌入到网页中,并能够产生特殊的效果。包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。

当用户访问这样的网页时, Applet被下载到用户的计算机上执行,但前提是用户使用的是支持Java的网络l浏览器。由于Applet是在用户的计算机上执行的,因此它的执行速度不受网络带宽或者Modem存取速度的限制。用户可以更好地欣赏网页上Applet产生的多媒体效果。

[请点击查看更多内容 转自CSDN博客Ada168855的专栏]

» Applet的载入

从 Web 上下载的 java Applet 是在称为沙箱 (sandbox) 的安全环境中运行的。

大多数浏览器上,在沙箱中运行时:

  • Applet 绝不能运行任何一个本地可执行程序
  • Applet 除了可以与从中下载它们的服务器进行通信外,不能与任何主机通信
  • Applet 不能读写本地计算机的文件系统
  • Applet 不能查找除版本号等以外的任何关于本地计算机的信息

[请点击查看更多内容 转自BlogJava]

原文地址:https://www.cnblogs.com/webapplee/p/3850375.html