java GUI (一)

简介: java GUI (一)

AWT概述

GUIGraphical User Interface,即图形用户界面,即应用程序提供给用户操作的图形界面,包括窗口、菜单、按钮、工具栏和其它各种图形界面元素

GUI设计提供了丰富的类库,这些类分别位于java.awtjavax.swing包中,简称为AWTSwing

AWT:重量型组件  

Swing:轻量型组件

Swing不仅实现了AWT中的所有功能,而且提供了更加丰富的组件和功能,足以满足GUI设计的一切需求。

AWT(Abstract Window Tools)

AWT是用于创建图形用户界面的工具包,它提供了一系列用于实现图形界面的组件,如窗口、按钮、文本框、对话框等。

这些组件都位于java.awt包中

组件不能独立地显示出来,必须将组件放在特定的对象中才能显示出来,即包含组件的组件——Container(容器)。

容器ContainerComponent的子类,它本身也是组件,具有组件所有的性质,也具有容纳其他组件和容器的功能。

Window:可独立存在的顶级窗口

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

       加到其它容器中(Window Applet)

组件和容器的关系


Window类是不依赖其它容器而独立存在的容器

Window类有两个子类Frame类和Dialog

Frame类用于创建具有标题栏的框架窗口,作为程序的主界面

Dialog类用于创建一个对话框,实现与用户的信息交互

Panel也是一个容器,但它不能单独存在,只能存在其它容器(Window或其子类)中,

一个Panel对象代表了一个长方形的区域,在这个区域中可以容纳其它组件


布局管理

不同平台对图形界面的管理也是不尽相同的,若采用绝对定位的方法管理Java图形界面的布局,那么当程序运行在不同的设备上的时候(比如分辨率变化了、现实设备不同了),窗体外观就会变形

超出显示区域或无法满屏显示

默认布局管理器

FlowLayout

FlowLayout是流式布局管理器最简单的布局管理器

使用FlowLayout布局管理器时,容器会将组件按照添加顺序从左向右放置。当到达容器的边界时,会自动将组件放到下一行的开始位置。这些组件可以左对齐、居中对齐(默认方式)或右对齐的方式排列。


FlowLayout布局管理器的特点就是可以将所有组件像流水一样依次进行排列,不需要用户明确的设定,但是在灵活性上相对差了点。


参数align决定组件在每行中相对于容器边界的对齐方式。


      可以使用该类中提供的常量作为参数传递给构造方法


 FlowLayout.LEFT用于表示左对齐


 FlowLayout.RIGHT用于表示右对齐


 FlowLayout.CENTER用于表示居中对齐参数hgap和参数vgap分别设定组件之间的水平和垂直间隙,可以填入一个任意数值。

BorderLayout

BorderLayout(边界布局管理器)是一种较为复杂的布局方式

BorderLayout将容器划分为五个区域,分别是东(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)

组件可以被放置在这五个区域的中任意一个。


GridLayout

GridLayout(网格布局管理器)使用纵横线将容器分成nm列大小相等的网格,每个网格中放置一个组件。

添加到容器中的组件首先放置在第1行第1列(左上角)的网格中,然后在第1行的网格中从左向右依次放置其它组件,行满后,继续在下一行中从左到右放置组件

GridBagLayout

GridBagLayout(网格包布局管理器)允许网格中的组件大小各不相同,而且允许一个组件跨越一个或者多个网格

CardLayout

CardLayout(卡片布局管理器将界面看做一系列卡片,在任何时候只有其中一张卡片是可见的,这张卡片占据容器的整个区域。

CardLayout的常用方法

不使用布局管理器

如果不希望通过布局管理器对容器进行布局,调用容器的setLayout(null)方法,将布局管理器取消。

不使用布局管理器时,程序必须调用容器中每个组件的setSize()setLocation()方法或者是setBounds()方法(这个方法接收四个参数,分别是左上角的xy坐标和组件的长、宽)来为这些组件在容器中定位

AWT事件处理

事件处理机制

事件处理机制专门用于响应用户的操作

事件对象(Event):封装了GUI组件上发生的特定事件(通常就是用户的一次操作

事件源(组件):事件发生的场所,通常就是产生事件的组件

监听器(Listener):负责监听事件源上发生的事件,并对各种事件做出响应处理的对象(对象中包含事件处理器)

事件处理器:监听器对象对接收的事件对象进行相应处理的方法

事件适配器

几乎所有的监听器接口都有对应的适配器类

通过继承适配器类实现监听器接口时,需要处理哪种事件,直接重写该事件对应的方法即可

用匿名内部类实现事件处理

常用事件

窗体事件

WindowEvent用于表示窗体事件

对窗体事件进行处理步骤

首先定义一个类实现WindowListener接口作为窗体监听器

然后通过addWindowListener()方法将窗体对象与窗体监听器绑定

鼠标事件

MouseEvent类用于表示鼠标事件,几乎所有的组件都可以产生鼠标事件鼠标事件包括鼠标按下、鼠标松开、鼠标单击等

对鼠标事件的处理可通过实现MouseListener接口或者继承适配器MouseAdapter类,然后调用addMouseListener()方法将监听器绑定到事件源对象

键盘事件

键盘操作也是最常用的用户交互方式,例如键盘按下、释放等,这些操作被定义为键盘事件

KeyEvent类表示键盘事件,处理KeyEvent事件的监听器对象需要实现KeyListener接口或者继承KeyAdapter类

动作事件

Java中,动作事件用ActionEvent类表示,处理ActionEvent事件的监听器对象需要实现ActionListener接口,但监听器对象在监听动作时,不会像鼠标事件一样处理鼠标个别的移动和单击的细节,而是去处理“按钮按下”这样“有意义”的事件

AWT绘图

java.awt包中专门提供了一个Graphics类,它相当于一个抽象的画笔


目录
相关文章
|
5月前
|
前端开发 Oracle Java
Java中的GUI应用开发技术选型
Java中的GUI应用开发技术选型
|
7月前
|
存储 Java 关系型数据库
农产品管理系统【GUI/Swing+MySQL】(Java课设)
农产品管理系统【GUI/Swing+MySQL】(Java课设)
51 1
|
7月前
|
存储 Java 关系型数据库
酒店管理系统【GUI/Swing+MySQL】(Java课设)
酒店管理系统【GUI/Swing+MySQL】(Java课设)
67 1
|
7月前
|
存储 Java 关系型数据库
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
94 1
|
7月前
|
存储 Java 关系型数据库
个人成绩信息管理系统【GUI/Swing+MySQL】(Java课设)
个人成绩信息管理系统【GUI/Swing+MySQL】(Java课设)
50 0
|
7月前
|
存储 Java 关系型数据库
仓库管理系统【GUI/Swing+MySQL】(Java课设)
仓库管理系统【GUI/Swing+MySQL】(Java课设)
54 0
|
7月前
|
存储 Java 关系型数据库
游乐场管理系统【GUI/Swing+MySQL】(Java课设)
游乐场管理系统【GUI/Swing+MySQL】(Java课设)
47 0
|
7月前
|
存储 Java 关系型数据库
影碟出租管理系统【GUI/Swing+MySQL】(Java课设)
影碟出租管理系统【GUI/Swing+MySQL】(Java课设)
75 0
|
7月前
|
存储 Java 关系型数据库
实验室设备管理系统【GUI/Swing+MySQL】(Java课设)
实验室设备管理系统【GUI/Swing+MySQL】(Java课设)
69 0
|
7月前
|
存储 Java 关系型数据库
请销假管理系统【GUI/Swing+MySQL】(Java课设)
请销假管理系统【GUI/Swing+MySQL】(Java课设)
63 0