小博老师解析Java核心技术 ——JSwing窗体状态监听事件

news/2024/7/5 6:46:42

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

[引言]

我们在学习Java编程的时候,如果需要开发客户端窗体类型的程序,可以使用JDK中的awt和swing库。本文开始小博老师就继续为大家演示Java窗体编程中的各类监听器,今天主要讲解窗体状态监听器中的事件。

 

[步骤阅读一]窗体状态监听器事件列表

监听器的主要作用,是为窗体中的控件增加与用户行为之间的交互功能,使得整个窗体应用程序拥有活跃的元素,加强用户体验性。

其中常用监听器主要分为:鼠标监听器(MouseListener)、鼠标手势监听器(MouseMotionListener)、键盘监听器(KeyListener)、窗体监听器(WindowListener)、行为监听器(ActionListener)等顶层接口。

今天小博老师就为大家主要讲解窗体状态监听器(WindowStateListener),我们首先来了解一下窗体状态监听器可以与用户的哪些行为进行交互,它们均以接口中的方法来封装:

void windowStateChanged(WindowEvent e):窗体状态改变事件

这个方法拥有一个形参(WindowEvent),该参数是窗体事件对象,其中包含了当前事件触发时,整个事件的各类数据信息,比如:触发事件的控件、当前窗体的状态等等信息。

窗体状态的改变,是我们在窗体程序开发过程中非常重要的一个事件,我们的应用界面布局、业务逻辑通常会因为窗体状态的改变而随之变化。

[步骤阅读二]窗体状态监听器的使用

接下来,小博老师通过一个简单的案例,制作一个简单的选项功能,这个选项的界面布局随着窗体状态的改变而变化,当窗体最大化时以循环按钮的形式布局,当窗体处于普通状态时则以下拉选项的布局展现。通过这个案例让大家一起体验一下窗体状态监听器的使用方式,核心代码如下:

public class MenuFrame extends JFrame{

public MenuFrame(){

super("博为峰教育");

setBounds(100, 20, 600, 400);

setLayout(null);

// 窗体启动时默认普通状态 以下拉列表形式展现选项

JComboBox cbx = new JComboBox(options);

cbx.setBounds(20, 20, 200, 25);

add(cbx);

// 为窗体注册 窗体状态改变监听器

addWindowStateListener(new WindowStateListener() {

// 窗体状态改变事件

public void windowStateChanged(WindowEvent e) {

getContentPane().removeAll();

// 判断当前窗体是否处于最大化

if(e.getNewState() == MAXIMIZED_BOTH  ){

// 窗体最大化时 以展开按钮形式显示选项

forint i = 0 ; i <= options.length - 1; i++ ){

JButton bt = new JButton(options[i]);

bt.setBounds(200*i+20, 20, 200, 25);

add(bt);

}

}

// 判断当前窗体是否处于普通状态

else if( e.getNewState() == NORMAL ){

// 窗体普通状态 以下拉列表形式展现选项

JComboBox cbx = new JComboBox(options);

cbx.setBounds(20, 20, 200, 25);

add(cbx);

}

}

});

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

// 选项数据源

String[] options = new String[]{

"上海漕河泾中心",

"北京回龙观中心",

"深圳华强北中心",

"南京新街口中心",

"成都航空路中心"

};

}

实例化窗体对象并且运行后,测试各类事件效果如下:

006zipb5zy77J4lrMQh21&690
006zipb5zy77J4mOPmG5a&690

转载于:https://my.oschina.net/u/2971691/blog/818743


http://www.niftyadmin.cn/n/2752651.html

相关文章

mysql分区 详解

第18章&#xff1a;分区 目录 18.1. MySQL中的分区概述 18.2. 分区类型 18.2.1. RANGE分区 18.2.2. LIST分区 18.2.3. HASH分区 18.2.4. KEY分区 18.2.5. 子分区 18.2.6. MySQL分区处理NULL值的方式18.3. 分区管理 18.3.1. RANGE和LIST分区的管理 18.3.2. HASH和KEY分区的管理 …

Python中的多值函数和和字典的结合

7]:def tracy(cy):print(cy) tracy({lesson1 :1,lesson2:2}) 结果 {lesson1: 1, lesson2: 2}这样做呢&#xff0c;函数传入的参数就只能有一个字典&#xff0c;传入的实参被赋值给cy这个从cy 的输出的结果也可以看出 下面还有第二种方式&#xff1a; def tracy(**cy):print(…

结构光实验正弦信号模板生成

代码如下&#xff1a; ## LL 2020/4/11 14:15 # a demo to generate pattern maps of different frequence. import numpy as np import matplotlib.pyplot as plt import cv2 as cvdef signal_xHz(A,B ,fi, time,N,i):return A * np.sin( 2 * np.pi * fi * np.linspace(0, t…

Yii2 创建项目

安装基础环境创建基础版创建高级版1 安装基础环境 搭建php, nginx环境, 请参考: http://blog.csdn.net/alex_my/article/details/53818143 首先先安装Composer cd ~/Lib/php curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer然后切…

深度图伪彩色处理(matlab)+gray2color

深度图 深度图衡量场景中的深度信息&#xff0c;每一个像素点的像素值代表该采样点对应的场景点到相机的距离&#xff0c;因此深度图是单通道的&#xff0c;从图像的视觉效果来看即灰度图。 判断深度图的质量我们可以通过观察和数据分析两种方法&#xff0c;通常最后的输出图在…

代码“中间地带”的封装与复用

先提出一个词&#xff1a;中间地带。 作为一个框架提供商&#xff0c;微软公司为我们提供了最基础最常用的类和方法&#xff0c;在实际工作中&#xff0c;我们需要去继承去组合这些类与方法&#xff0c;形成我们的解决方案。 那么&#xff0c;存在一个问题&#xff0c;为什么微…

Hexo建站、部署、主题优化

Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown&#xff08;或其他渲染引擎&#xff09;解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。 下面记录本人Hexo建站、部署、主题优化的过程。 Hexo建站、部署 Hexo建站教程GitHub Pages绑…

个人收藏夹

1、MATLAB实现带有保边效果的双边滤波器&#xff1a; 代码引用自博客&#xff1a; http://blog.chinaaet.com/helimin/p/5100018184 双边滤波器函数代码如下&#xff1a; function B bfilter2(A,w,sigma) %A为给定图像&#xff0c;归一化到[0,1]的double矩阵 %W为双边滤…