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

» 图形用户界面概述

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]

java图形界面外部类例题_[JAVA_开课吧资源]第四周 图形用户界面程序设计相关推荐

  1. Java内部类引用外部类中的局部变量为何必须是final问题解析

    Java内部类引用外部类中的局部变量为何必须是final问题解析 今天编写一个多线程程序,发现在方法内定义内部类时,如果内部类调用了方法中的变量,那么该变量必须申明为final类型,百思不得其解,后来 ...

  2. java内部类与外部类

    java内部类与外部类 java内部类与外部类 一.内部类的作用 二.内部类分类 一.成员内部类 1.非静态内部类 2.静态内部类 二.局部内部类 三.匿名内部类(重要) java内部类与外部类 概念 ...

  3. Java内部类、外部类之间访问权限

    Java内部类.外部类之间访问权限 啥是内部类 内部类可以访问外部类的所有成员吗 那外部类能访问内部类的所有成员吗 匿名内部类 静态内部类呢 为啥会这样呢 得出结论 啥是内部类 顾名思义,内部类就是在 ...

  4. java图形界面的监听_非专业码农 JAVA学习笔记 用户图形界面设计与实现-所有控件的监听事件...

    用户图形界面设计与实现-监听事件 System.applet.Applet (一)用户自定义成分 1.绘制图形 Public voit piant(Ghraphics g){  g.drawLine等 ...

  5. JAVA内部类、外部类

    一.内部类                内部类就是将一个类A定义在类B里边,里边的那个类A称为内部类,外边的类B称为外部类 成员内部类定义格式:class 外部类{ class 内部类{ } } c ...

  6. pr图形模板预设怎么使用_技术丨PR怎样安装动态图形模板?Pr mac版怎样调用Mogrt预设?Adobe Premiere导入MOGRTs预设完整教程...

    Mogrts是一动态图形模板是一种可在 After Effects 或 Premiere Pro 中创建的文件类型 (.mogrt).可以帮助用户轻松使用PR编辑简单特效动画.下面是小编为大家整理的p ...

  7. mysql 图形界面外键_关于使用可视化图形工具navicat for mysql来创建外键的步骤

    主键:主键是一张表的唯一标识符,应该让其处于不可被外界更改状态. 且主键对于用户来说是无意义的,为了明确这一点,我们应该让主键处于一种幽魂状态,即主键存在,但其他人并不感觉到它存在. 外键:创建外键是 ...

  8. java 查看堆外内存占用_如何监控和诊断JVM堆内和堆外内存使用?

    上一讲我介绍了 JVM 内存区域的划分,总结了相关的一些概念,今天我将结合 JVM 参数.工具等方面,进一步分析 JVM 内存结构,包括外部资料相对较少的堆外部分. 今天我要问你的问题是,如何监控和诊 ...

  9. JAVA登录界面学生和老师_学生信息管理系统之第三篇登录界面java代码

    class DLFrame extends JFrame implements ActionListener, ItemListener {// 登录界面 JPanel p1 = null; JPan ...

最新文章

  1. Devexpress TreeList控件绑定显示父子节点对像
  2. VTK:Utilities之ArrayCalculator
  3. asp.net(c#)将彩色图片变灰阶图片
  4. BZOJ3038 上帝造题的七分钟
  5. 用C#访问Dynamic AX的WebService.
  6. 学习网站的闪卡暴露了美军核机密
  7. Ubuntu20.04显卡驱动安装
  8. 软件测试周刊(第25期):不要成天到晚地找意义
  9. STM32开源代码——OLED汉字显示程序
  10. 浅谈mysqli连接方式与PDO连接方式
  11. 苹果战世界:苹果史上27大口水战
  12. Latex入门_第3章:文档元素
  13. Python吴恩达深度学习作业22 -- Emoji表情情感分类器
  14. 考试科目C语言缩写,全国计算机专业统考 考试科目都有什么
  15. linux下一键部署mysql_linux下一键编译搭建mysql服务器脚本
  16. win10找不到你的相机,错误代码0xA00F4244解决办法
  17. 从回合霸王到网游巨头 网易游戏十年史
  18. 【ACM-ICPC 2018 南京赛区网络预赛】E AC Challenge【状压DP】
  19. java命令行调用格式工厂转码
  20. BeanDefinition 属性详解

热门文章

  1. 51CTO博客2.0 答疑QA文档【2017.12.04更新】
  2. fullcalendar的使用
  3. Adobe XD -----之常用快捷键
  4. 服务器的CPU跟家用电脑的一样吗,服务器该怎么选择CPU配置
  5. 知道什么时候该停下来!
  6. 安装Jupyter Notebook并配置用于多用户的反向代理(Nginx)
  7. 真遺憾,你來的不是地方
  8. 树莓派分辨率进行设置
  9. [音乐] The Mass(魔界传奇) (转)
  10. HttpClient发送请求