当前位置: 首页 > news >正文

Java基础-组件及事件处理(中)

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

BorderLayout布局管理器

说明:

示例:

FlowLayout布局管理器

说明:

示例:

GridLayout布局管理器 

说明:

示例:

事件处理机制

什么是事件?

事件的类型

什么是事件处理? 

事件处理所涉及的步骤 

回调方法

Swing常用事件处理

SWING 事件类

EventObject 类

类声明

字段 

类构造函数

类方法 


BorderLayout布局管理器

说明:

BorderLayout 将容器分为 EAST 、 SOUTH 、 WEST 、 NORTH 、 CENTER五个区域,普通组件可以被放置在这 5 个区域的任意一个中 。 BorderLayout布局 管理器的布局示意图如图所示 

向BorderLayouti布局管理器的容器中添加组件时,需要使用add(Component comp,Object constraints)方法。


参数comp表示要添加的组件,constraints指定将组件添加到布局中的位置,它是一个Object类型。


传参时可以使用BorderLayout类提供的5个常量设置组件位置,它们分别是EAST 、 SOUTH 、 WEST 、 NORTH 、 CENTER

BorderLayout的好处就是可以限定各区域的边界,当用户改变容器窗口大小时,各个组件的相对位置不变。


向BorderLayout的布局管理器添加组件时,如果不指定添加到哪个区域,默从添加到CENTER区域。


每个区域只能放置一个组件,如果向一个区域中添加多个组件时,后放入的组件会覆盖先放入的组件。

示例:

import java.awt.*;public class BorderLayoutDemo1 {public static void main(String[] args) {//1.创建Frame对象Frame frame = new Frame("这里测试BorderLayout");//2.指定Frame对象的布局管理器为BorderLayoutframe.setLayout(new BorderLayout(30,5));//3.往Frame指定东南西北中各添加一个按钮组件frame.add(new Button("东侧按钮"), BorderLayout.EAST);frame.add(new Button("西侧按钮"), BorderLayout.WEST);frame.add(new Button("南侧按钮"), BorderLayout.SOUTH);frame.add(new Button("北侧按钮"), BorderLayout.NORTH);frame.add(new Button("中间按钮"), BorderLayout.CENTER);//4.设置Frame为最佳大小frame.pack();//5.设置Frame可见frame.setVisible(true);}
}

FlowLayout布局管理器

说明:

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


在这种布局下,容器会将组件按照添加顺序从左向右放置,当到达容器的边界时,会自动将组件放到下一行的开始位置。


这些组件可以按左对齐、居中对齐(默认方式)或右对齐的方式排列。

参数ag决定组件在每行中相对于容器边界的对齐方式,分别为左对齐、右对齐、居中对齐。


对齐方式可以使用该类中提供的常量FlowLayout.LEFT、FlowLayout.RIGHT、FlowLayout..CENTER表示。


参数hgap和参数vgap分别设定组件之间的水平和垂直间距,可以填入一个任意数值。

示例:

import java.awt.*;public class FlowLayoutDemo {public static void main(String[] args) {//1.创建Frame对象Frame frame = new Frame("这里测试FlowLayout");//2.修改Frame容器的布局管理器为FlowLayoutframe.setLayout(new FlowLayout(FlowLayout.LEFT,20,20));//3.往Frame中添加100个buttonfor (int i = 0; i < 100; i++) {frame.add(new Button("按钮"+i));}//4.设置Frame为最佳大小frame.pack();//5.设置Frame可见frame.setVisible(true);}
}

GridLayout布局管理器 

说明:

GridLayout 布局管理器将容器分割成纵横线分隔的网格 , 每个网格所占的区域大小相同。当向使用 GridLayout 布局管理器的容器中添加组件时, 默认从左向右、 从上向下依次添加到每个网格中 。 与 FlowLayout不同的是,放置在 GridLayout 布局管理器中的各组件的大小由组件所处的区域决定(每 个组件将自动占满整个区域) 。

GridBagLayout 布局管理器的功能最强大 , 但也最复杂,与 GridLayout 布局管理器不同的是, 在GridBagLayout 布局管理器中,一个组件可以跨越一个或多个网格 , 并可以设置各网格的大小互不相同,从而增加了布局的灵活性 。 当窗口的大小发生变化时 , GridBagLayout 布局管理器也可以准确地控制窗口各部分的拉伸 。

由于在GridBagLayout 布局中,每个组件可以占用多个网格,此时,我们往容器中添加组件的时候,就需要具体的控制每个组件占用多少个网格,java提供的GridBagConstaints类,与特定的组件绑定,可以完成具体大小和跨越性的设置。

示例:

import java.awt.*;public class GridLayoutDemo{public static void main(String[] args) {//1.创建Frame对象,并且标题设置为计算器Frame frame = new Frame("计算器");//2.创建一个Panel对象,并且往Panel中放置一个TextField组件Panel p1 = new Panel();p1.add(new TextField(30));//3.把上述的Panel放入到Frame的北侧区域frame.add(p1,BorderLayout.NORTH);//4.创建一个Panel对象,并且设置其布局管理器为GridLayoutPanel p2 = new Panel();p2.setLayout(new GridLayout(3,5,4,4));//5.往上述Panel中,放置15个按钮,内容依次是:0,1,2,3,4,5,6,7,8,9,+,-,*,/,.for (int i = 0; i < 10; i++) {p2.add(new Button(i+""));}p2.add(new Button("+"));p2.add(new Button("-"));p2.add(new Button("*"));p2.add(new Button("/"));p2.add(new Button("."));//6.把上述Panel添加到Frame的中间区域中国frame.add(p2);//7.设置Frame为最佳大小frame.pack();//8.设置Frame可见frame.setVisible(true);}
}

 

事件处理机制

什么是事件?

改变对象的状态被称为事件,即事件描述源的状态变化。事件产生用户与图形用户界面组件交互的结果。例如,点击一个按钮,移动鼠标,通过键盘输入一个字符,从列表中选择一个项目,滚动页面都是导致一个事件发生的活动。

事件的类型

事件可以大致分为两类::

  • 前台事件 - 这些事件需要用户的直接互动。它们是由在图形用户界面中人与图形组件交互的结果而产生的。例如,点击一个按钮,移动鼠标,通过键盘输入一个字符,从列表中选择一个项目,滚动页面等。

  • 后台事件 - 这些事件需要最终用户的交互,它们被称为后台事件。操作系统的中断,硬件或软件故障,计时器过期,操作完成都是后台事件的例子

什么是事件处理? 

事件处理是一种机制,如果一个事件发生时,它控制该事件,并且决定应该会发生什么。这种机制具有被称为事件处理程序的代码,当一个事件发生时,它是可执行的。Java 使用代理事件模型来处理事件。该模型定义了标准的机制来生成和处理事件。让我们来简要介绍这个模型。

代理事件模型具有下列主要参与者,即:

  •  - 源是一个对象,事件发生在该对象上。源负责提供发生事件的信息给它的处理器。Java 提供源对象的类。

  • 监听器 - 它也被称为作为事件处理。监听器负责产生对一个事件的响应。从 Java 实现的角度来看,监听器也是一个对象。监听器等待直到它接收到一个事件。一旦收到该事件,监听器进程的事件就返回。

这种方法的好处是,用户界面逻辑完全从生成事件的逻辑中分开。用户界面元素能够把事件的处理委派给一段单独的代码。在这个模型中,监听器需要用源对象注册,以便监听器能够接收事件通知。这是一个有效的处理事件的方式,因为这些事件通知只发送给那些想要接收它们的监听器。

事件处理所涉及的步骤 

  • 用户单击按钮,然后生成事件。

  • 现在有关事件类的对象是自动创建的,源和事件的信息在同一对象得到填充。

  • 事件对象被转发到注册监听器类的方法中。

  • 该方法现在得到执行并且返回。

有关监听器要记住的要点:

  • 为了设计一个监听器类,我们必须开发一些监听器接口。这些监听器接口预测一些公共的抽象回调方法,这些方法必须由监听器类来实现。

  • 如果你没有实现任何预定义的接口,那么你的类不能作为源对象的监听器类。

回调方法

这些方法由 API 提供者来提供,由应用程序员来定义,并且由应用程序开发者来调用。这里的回调方法代表一个事件方法。响应一个事件 java jre 将触发回调方法。所有这些回调方法在监听器接口中被提供。

如果一个组件需要一些监听器监听它的事件,源必须自己注册给监听器。

Swing常用事件处理

SWING 事件类

事件类代表事件。Java 提供各种事件类,但是我们将讨论更频繁使用的那些事件类。

EventObject 类

它是派生所有事件状态对象的根类。所有事件都是用对象,的引用来构造的,即逻辑上认为是问题最初发生的事件的对象。这个类定义在 java.util 包中。

类声明

下面是 java.util.EventObject 类的声明:

public class EventObjectextends Objectimplements Serializable

字段 

下面是 java.util.EventObject 类的字段:

  • protected Object source –- 事件最初发生的对象。

类构造函数

类方法 


http://www.mrgr.cn/news/72303.html

相关文章:

  • 【测试框架篇】单元测试框架pytest(1):环境安装和配置
  • openresty入门教程:rewrite_by_lua_block
  • 658. 找到 K 个最接近的元素
  • 百度富文本禁止编辑
  • 【计网不挂科】计算机网络期末考试(综合)——【选择题&填空题&判断题&简述题】完整试卷
  • 如何搭建自动化测试框架
  • flutter下拉刷新上拉加载的简单实现方式三
  • 【SSL-RL】自监督强化学习:自预测表征 (SPR)算法
  • 猎板 PCB 之罗杰斯板材:高性能驱动多领域发展
  • Spring Boot 接口防重复提交解决方案
  • 办公必备:非常好用的截图软件-snipaste
  • Spring Boot 集成 RabbitMQ:消息生产与消费详解
  • 【comfyui教程】ComfyUI学习笔记——最细ComfyUI安装教程!
  • OCX控件注册 SynCardOcx.ocx IE浏览器身份识别
  • DWARF
  • springboot企业信息管理系统,计算机毕业设计项目源码310,计算机毕设程序(LW+开题报告、中期报告、任务书等全套方案)
  • 「QT」基础数据类 之 QString 字符串类
  • 基于正则化算法的SAR图像去噪matlab仿真
  • Spring框架之中介者模式 (Mediator Pattern)
  • SSH远程连接工具详解
  • CLion配置QT开发环境
  • javaSpringbootmsyql智慧园区管理系统的开发88160-计算机毕业设计项目选题推荐(附源码)
  • D3入门:学习思维导图 + 99个中文API详解
  • SpringBoot开发——整合 apache fileupload 轻松实现文件上传与下载
  • js三大组成部分
  • AI文献搜索工具:Lumina