GUI,Graphics User Interface,图形用户界面。GUI直观的将计算机的功能呈现给用户,图形界面在视觉上更容易接受、更简单直观。

GUI需要操作系统和硬件的支持。因此,GUI编程往往要处理移植性问题。Java的GUI编程有相对比较好的可移植性。

    GUI的三要素:组件、容器、事件。

组件,继承了一定的功能模块,提供了公用接口以便外部调用,具有良好的可重用性。

容器,在有些语言中也称为窗体,容器也是一种特殊的组件,容器中可以放置其他组件,并且通过布局管理器管理容器中各组件的位置。

事件,每个组件都会触发动作事件,java中不同的事件由不同的监听器处理,组件是事件源,而某种监听器主要用来监听来自指定事件源产生的动作事件。

一、Swing组件

Java的GUI功能主要集中在awt和swing两个包中。awt是GUI底层包。swing包是高层的封装,更容易移植。Swing包中有很多Swing组件。

Swing组件独立于本地窗口系统

Swing组件除了AbstractButton类之外都以J开头

Swing组件是基于AWT构建的

包含AWT可视化组件的替代组件,也包含复杂组件-树和表,因此,提供了更丰富的组件类型

二、容器

容器是一种特殊的组件,其它组件可以放置到容器中,并且通过布局管理器进行布局控制。

AWT提供的两个主要的容器类:

Window,可以独立存在的顶级窗口

Panel:可以作为容器容纳其它组件,但不能独立存在,必须被添加到其他容器中。

其中,每一种容器都采用一种默认的布局管理方式。

布局管理

Java的组件在容器中的具体位置是通过布局管理器LayoutManager实现的。

如下图:

FlowLayout是一种最简单的布局管理器,主要思想是让容器内的组件按照行优先的方式排列,一行排列到边界后就折回到下一行继续排列,以此类推。Panel默认使用此布局管理器。

BorderLayout是Frame的默认布局管理器。它把窗体分割成North,South,East,West和Center五个区域,并且根据窗体的大小自动调整组件的大小。默认是Center区。

GridLayout将空间划分成规则的矩形网格,每个单元格区域大小相等。组件被添加到每个单元格中,先从左到右填满一行后换行,再从上到下。

布局管理器负责各个组件的大小和位置,用户无法在这种情况下设置组件大小和位置属性,如果用户要自己设置则取消该布局管理器的方法为:setLayout(null)

三、事件

事件一般分为三种类型:键盘事件、鼠标事件以及组件的动作事件

事件处理过程中涉及到3个对象:事件源,事件和监听器

事件的处理机制是一种委派式事件处理方式:普通组件将整个事件处理委托给特定的事件监听器,当该事件源发生指定的事件时,就通知所委托的事件监听器,由事件监听器来处理这个事件。

实现监听机制,需要有一下三个必要步骤:

 No.1 In the declaration for the eventhandler class,one line of code specifies that the class either implements alistener interface or extends a class that implements a listener interface.Forexample:

[java] view plaincopyprint?
  1. Publicclass MyClass implement ActionListener{}

No.2Another lineof code registers an instance of the event handler class as a listener on oneor more components. For example:

[java] view plaincopyprint?
  1. someComponent.addActionListener(instanceOfMyClass);

  No.3 The event handler class has code that implementsthe methods in the listener interface. For example:

[java] view plaincopyprint?
  1. public voidactionPerformed(ActionEvent e) {
  2. ...//code that reacts to the action...
  3. }

    模型如下

    事件监听有四种实现方式:自身类作为事件监听器;外部类作为事件监听机制;匿名内部类作为事件监听器;内部类作为事件监听器。

代码:

[java] view plaincopyprint?
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. public class TestWindowClose{
  4. public static void main(String[] args){
  5. new MyFrame55("MyFrame");
  6. }
  7. }
  8. class MyFrame55 extends Frame{
  9. MyFrame55(String s){
  10. super(s);
  11. setLayout(null);
  12. setBounds(300,300,400,300);
  13. this.setBackground(new Color(204,204,255));
  14. setVisible(true);
  15. /*this.addWindowListener(new MywindowMonitor());*/
  16. /*匿名内部类,出了括号没人认识了,适用于方法逻辑简单,语句比较少,而且不经常变动的类*/
  17. this.addWindowListener(new WindowAdapter(){
  18. public void windowClosing(WindowEvent e){
  19. setVisible(false);
  20. System.exit(-1);
  21. }
  22. });
  23. }
  24. /*内部类,只有这个类认识,出了这个类就不认识了*/
  25. class MywindowMonitor extends WindowAdapter{
  26. public void windowClosing(WindowEvent e){
  27. setVisible(false);
  28. System.exit(0);
  29. }
  30. }
  31. }

总结

一个软件是否为优秀的软件,用户界面的设计直观重要。开发人员在进行GUI设计时,需要与软件的用户进行充分的沟通,确定用户的需求和使用习惯,在实用性与美观之间达到平衡。

Java华丽转身 —— GUI编程宝典相关推荐

  1. Java开发:GUI编程

    本文针对GUI编程进行部分简述,实际开发工作中并不常用. 目录 一.GUI简介 二.AWT A.AWT介绍 B.Frame C.Panel面板 D.布局管理器 一.GUI简介 GUI(Graphica ...

  2. java图形化GUI编程-AwtSwing(一文解决)

    一. 课程概述 通常情况下,java语言一般是用来开发后台程序的,所谓的后台程序就是部署在服务器端的程序,默默的工作,用户是看不到任何界面的,所以很多情况下,学习java会感觉很枯燥. 事实上,我们使 ...

  3. Java华丽转身 —— 多线程(一)必备知识

    本篇文章介绍Java多线程的必备知识,主要包括以下三个方面: 什么是线程,什么是进程? 线程和进程有什么区别? 线程启动(两种方式,并举例对比说明)        应用篇( 以考试系统为例) 什么是线 ...

  4. Java平方计算GUI编程

    窗体上有五个组件,其中包括:一个标签.两个文本框和两个按钮.第一个文本框用于输入一个整数,单击"计算平方"按钮时,在第二个文本框中显示计算结果.当输入不是整数时,则出现提示&quo ...

  5. java图形界面GUI编程

    https://blog.csdn.net/weixin_39778570/article/details/80656236

  6. Java:GUI编程

    文章目录 GUI编程 AWT 一.AWT介绍 二.组件和容器(Component和Container) 2.1.Frame 2.2.Panel 三.布局管理器 3.1.第一种布局管理器--FlowLa ...

  7. Java基础学习总结(23)——GUI编程

    2019独角兽企业重金招聘Python工程师标准>>> 一.AWT介绍 所有的可以显示出来的图形元素都称为Component,Component代表了所有的可见的图形元素,Compo ...

  8. 9.JAVA之GUI编程列出指定目录内容

    代码如下: /*列出指定目录内容*/ import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import ...

  9. 13.JAVA之GUI编程将程序打包jar

    jar基本命令: 目标:将下列MyMenuDemo.java代码打包成jar. 方法如下: 1.把java代码放到d:\myclass目录下. 2.按下快捷键ctrl+r,打开运行窗口,输入cmd后回 ...

最新文章

  1. 自定义的GridView控件源代码
  2. lmbs PHP,PHP的GD2函数创建折线图源码示例
  3. java map数组定义_如何定义一个空的Map[]数组?
  4. java输入输出实验报告_JAVA实验报告(河北工业大学)
  5. vision画流程图的软件_产品流程图的定义,作用和画法
  6. java maven mainclass_使用Maven运行Java main的3种方式
  7. TypeError: 'NoneType' object is not subscriptable
  8. matlab 复频谱图,基于MATLAB实现连续信号与系统复频域分析
  9. elasticsearch_head插件安装
  10. 十大网络安全策略 打造坚固的内网
  11. 机器人动力学建模之牛顿欧拉法推导
  12. 技术面试时该反问面试官什么问题?
  13. 07-图6 旅游规划
  14. bat并行调用打包bat总结
  15. Unity3d场景渲染出图
  16. 探究App推广之路:流量思维永不死 ☞ iphone中App store上架优化建议
  17. 用Java写一个监视者模式
  18. 阿里云大学-虚拟化技术入门-听课笔记
  19. Tbase基础积累二之数据迁移工具dbbridge
  20. FreeRTOS笔记篇:第四章 -- 队列管理

热门文章

  1. js中当等于最小值是让代码不执行_从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理...
  2. php正则去除base64,使用PHP preg_match_all的正则表达式base64块
  3. 线性表的定义和基本运算之线性结构
  4. 听歌也能倍速了!网易云音乐PM怎么想的?
  5. 给即将35岁的产品经理提个醒
  6. 2021年中国物流地产行业发展报告
  7. python爬虫小工具——editplus
  8. 虚拟专题:知识图谱 | DDoS攻击恶意行为知识库构建
  9. 作者:​周绮凤(1976-),女,博士,厦门大学自动化系副教授。
  10. 【操作系统】请求调页