第9章 组件及事件处理
9.1 Java Swing概述
图像用户界面(GUI)
java.awt包,即Java抽象窗口工具包,Button(按钮)、TextField(文本框)、List(列表)
javax.swing包
容器类(Container)和组件类(Component)
9.2 窗口
一个应用程序中可以创建多个窗口,并非最多只能有一个窗口
9.2.1 JFrame常用方法
JFrame 创建的窗口默认是不可见的,需要调用setVisible(true)方法来设置为可见
窗口可以调用setTitle(String s)方法设置窗口的标题
JFrame() //创建一个无标题的窗口JFrame(String s) //创建标题为s的窗口public void setBounds(int a,int b,int width,int height) //设置窗口的初始位置(a,b),宽width,高heightpublic void setSize(int width,int height) //设置窗口的大小public void setLocation(intx,inty) //设置窗口的位置,默认位置是(0,0)。 public void setVisible(boolean b) //设置窗口是否可见,窗口默认是不可见的。 public void setResizable(boolean b) //设置窗口是否可以调整大小,默认可以调节大小。public void dispose() //撤销当前窗口,并释放当前窗口所使用的资源。 public void setExtendedState(int state) //设置窗口的扩展状态,其中参数state取JFrame类中的类常量MAXIMIZED_HORIZ(水平方向最大化)、MAXIMIZED_ VERT(垂直方向最大化)或MAXIMIZEDBOTH(水平、垂直方向都最大化)。public void setDefaultCloseOperation(int operation) //该方法用来设置单击窗体右上角的关闭图标后程序会做出怎样的处理,其中的参数operation取JFrame类中的int 型static常量DO_NOTHING_ON_CLOSE(什么也不做)、HIDE_ON_CLOSE(隐藏 当前窗口)、DISPOSE_ON_CLOSE(隐藏当前窗口,并释放窗体占有的其他资源)或 EXIT_ON_CLOSE(结束窗口所在的应用程序),程序根据参数operation的取值做出不同的处理。
一个容器对象不可以使用add方法添加一个JFrame窗口
JFrame 是顶层容器,不能向 JFrame 窗口中添加 JFrame 窗口
JFrame 是顶层容器,一个容器对象(比如 JPanel 等普通容器)不能使用 add 方法直接添加 JFrame 窗口。顶层容器有其自身独立的显示机制,不能作为普通组件添加到其他容器中。
9.2.2 菜单条、菜单、菜单项
9.3 常用组件和布局
组件:
①JTextField(文本框)
在 Java 的 Swing 组件中,JTextField 作为常用文本输入组件,当用户在其中进行输入后按回车键确认输入时,会触发 ActionEvent事件;当该组件获得输入焦点(如鼠标点击选中)或失去焦点(点击其他组件)时,会触发 FocusEvent;而用户在组件内进行按键操作(按下、释放按键等)时,会触发 KeyEvent 。
②JTextArea(文本区)
JTextArea 用于多行文本编辑,其内部的文档对象管理着文本内容。当对 JTextArea 中的文本进行插入、删除、替换等修改操作时,会触发 DocumentEvent事件,通过注册 DocumentListener 可以监听这些文档内容的变化 。
③JButton(按钮)
④JLabel(标签)
⑤JCheckBox(复选框)
⑥JRadioButton(单选按钮)
⑦JComboBox(下拉列表)
⑧JPasswordField(密码框)
容器:
①JPanel(面板)
②JTabbedPane(选项卡窗格)
③JScrollPance(滚动窗格)
④JSplitPane(拆分窗格)
⑥JLayeredPane(分层窗格)
布局:
①FlowLayout
使用 FlowLayout 布局的容器对添加组件的数量没有限制(理论上)
JPanel 的默认布局是 FlowLayout 布局
②BorderLayout
Frame容器的默认布局是BorderLayout布局。
JDialog 的默认布局是 BorderLayout 布局
在 Java 的 Swing 组件体系中,JFrame 作为顶层容器,其默认的布局管理器是 BorderLayout ,它将容器划分为东(East)、南(South)、西(West)、北(North)、中(Center)五个区域
③CardLayout
④GridLayout
⑤null
⑥BoxLayout
9.4 处理事件
9.4.2 ActionEvent事件
JButton 对象使用addActionListener(ActionListener l)方法时,需要传入实现了 ActionListener 接口的类的实例作为监视器,若传入没有实现该接口的类实例会报错
对于有监视器的 JTextField 文本框,当处于活动状态(有输入焦点)时,用户即使不输入文本,按回车(Enter)键也可触发 ActionEvent 事件
9.4.3 ItemEvent事件
9.4.4 DocumentEvent事件
9.4.5 MouseEvent事件
MouseMotionListener 接口专门用于处理鼠标的移动和拖动相关事件,它包含 mouseDragged (MouseEvent e)(鼠标在组件上被拖动时触发 )和 mouseMoved (MouseEvent e)(鼠标在组件上移动时触发 )方法,所以要处理鼠标拖动事件,需要实现该接口 。
MouseListener接口中有5个方法:
mouseClicked (MouseEvent e)(鼠标点击组件时触发 )、mousePressed (MouseEvent e)(鼠标按键在组件上按下时触发 )、mouseReleased (MouseEvent e)(鼠标按键在组件上释放时触发 )、mouseEntered (MouseEvent e)(鼠标进入组件区域时触发 )、mouseExited (MouseEvent e)(鼠标离开组件区域时触发 )
9.4.6 FocusEvent事件
9.4.7 KeyEvent事件
监视 KeyEvent 事件的监视器必须实现 KeyListener 接口
9.4.8 WindowEvent事件
监视 WindowEvent 事件的监视器必须实现 WindowListener 接口
9.5 使用MVC结构
9.6 对话框
9.7 树组件与表格组件
9.8 把按钮绑定到键盘
相关文章:

第9章 组件及事件处理
9.1 Java Swing概述 图像用户界面(GUI) java.awt包,即Java抽象窗口工具包,Button(按钮)、TextField(文本框)、List(列表) javax.swing包 容器类(…...
三、高级攻击工具与框架
高级工具与框架是红队渗透的核心利器,能够实现自动化攻击、权限维持和隐蔽渗透。本节聚焦Metasploit、Cobalt Strike及企业级漏洞利用链,结合实战演示如何高效利用工具突破防御并控制目标。 1. Metasploit框架深度解析 定位:渗透测试的“瑞…...

用golang实现二叉搜索树(BST)
目录 一、概念、性质二、二叉搜索树的实现1. 结构2. 查找3. 插入4. 删除5. 中序遍历 中序前驱/后继结点 一、概念、性质 二叉搜索树(Binary Search Tree),简写BST,又称为二叉查找树 它满足: 空树是一颗二叉搜索树对…...
10.13 LangChain工具调用实战:@tool装饰器+小样本提示,日处理10w+调用秘籍
LangChain 工具调用(Tool Calling)深度解析 关键词:LangChain工具调用, 函数调用与工具调用区别, @tool装饰器, ToolMessage机制, 小样本提示工程 1. Function Calling vs Tool Calling LangChain 中的工具调用系统经历了从函数调用(Function Calling)到工具调用(Tool …...
C++跨平台开发经验与解决方案
在当今软件开发领域,跨平台开发已成为一个重要的需求。C作为一种强大的系统级编程语言,在跨平台开发中扮演着重要角色。本文将分享在实际项目中的跨平台开发经验和解决方案。 1. 构建系统选择 CMake的优势 跨平台兼容性好 支持多种编译器和IDE 强大…...
【以及好久没上号的闲聊】Unity记录8.1-地图-重构与优化
最近几年越来越懒,要是能分身多好哇,大家教教我 懒得更CSDN了,所以不是很常上号,而CSDN的两周前私信显示的灰灰的 也就是虽然我每次上号都有看私信,但是搞笑的是前面四个明显的消息全是CSDN的广告,我压根没…...
C# 活动窗体截图:基于 Win32 API 的实现
1. 核心功能与技术栈 该截图功能类 ScreenShotClass 基于 Win32 API 实现了两种截图方式: CopyFromScreen 方法:利用 Graphics.CopyFromScreen 直接截取屏幕区域。BitBlt 方法:通过 GDI 的位图块传输(BitBlt)实现窗口…...

服务器防文件上传手写waf
一、waf的目录结构,根据自己目录情况进行修改 二、创建文件夹以及文件 sudo mkdir -p /www/server/waf-monitor sudo mkdir -p /www/server/waf-monitor/quarantine #创建文件夹 chmod 755 /www/server/waf-monitor #赋权cd /www/server/waf-monitor/touch waf-m…...
大模型为什么学新忘旧(大模型为什么会有灾难性遗忘)?
字数:2500字 一、前言:当学霸变成“金鱼” 假设你班上有个学霸,数学考满分,英语拿第一,物理称霸全校。某天,他突然宣布:“我要全面发展!从今天起学打篮球!” 一周后&am…...

计算机的基本组成与性能
1. 冯诺依曼体系结构:计算机组成的金字塔 1.1. 计算机的基本硬件组成 1.CPU - 中央处理器(Central Processing Unit)。 2.内存(Memory)。 3.主板(Motherboard)。主板的芯片组(Ch…...

linux下编写shell脚本一键编译源码
0 前言 进行linux应用层编程时,经常会使用重复的命令对源码进行编译,然后把编译生成的可执行文件拷贝到工作目录,操作非常繁琐且容易出错。本文编写一个简单的shell脚本一键编译源码。 1 linux下编写shell脚本一键编译源码 shell脚本如下&…...

【深度学习】#12 计算机视觉
主要参考学习资料: 《动手学深度学习》阿斯顿张 等 著 【动手学深度学习 PyTorch版】哔哩哔哩跟李沐学AI 目录 目标检测锚框交并比(IoU)锚框标注真实边界框分配偏移量计算损失函数 非极大值抑制预测 多尺度目标检测单发多框检测(S…...

Baklib赋能企业知识资产AI化升级
AI驱动知识管理革新 在数字化转型浪潮中,企业知识管理的范式正经历AI技术的深度重构。传统知识库受限于静态存储与人工维护,而Baklib通过构建知识中台架构,将多模态数据处理与语义理解引擎深度融合,实现知识资产的动态聚合与智能…...

【C++】模板上(泛型编程) —— 函数模板与类模板
文章目录 一、啥是泛型编程二、函数模板2.1、函数模板的概念2.2、函数模板的格式2.3、函数模板的原理2.4、函数模板的实例化2.4.1、隐式实例化:让编译器根据实参推演模板参数的实际类型2.4.2、显示实例化:在函数名后的<>中指定模板参数的实际类型 …...
软件架构之--论微服务的开发方法1
论微服务的开发方法1 摘要 2023年 2月,本人所在集团公司承接了长三角地区某省渔船图纸电子化审查系统项目开发,该项目旨在为长三角地区渔船建造设计院、以及渔船图纸审查机构提供一个便捷的渔船图纸电子化审查服务平台。在此项目中,我作为项目组成员参与项目的建设工作,并…...

【大模型系列】logprobs(对数概率)参数
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

C语言内存函数与数据在内存中的存储
一、c语言内存函数 1、memcpy函数是一个标准库函数,用于内存复制。功能上是用来将一块内存中的内容复制到另一块内存中。用户需要提供目标地址、源地址以及要复制的字节数。例如结构体之间的复制。 memcpy函数的原型是:void* memcpy(void* …...
代码案例分析
以下是一个使用线性回归进行简单房价预测的机器学习代码案例分析: 代码示例 import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split # 生成一些示例数据…...

通过MCP让LLM调用系统接口
场景 MCP的出现大大丰富了LLM的功能,对于存量系统,我们希望能让模型调用已有的接口,以最小的成本让AI能够获取系统内部数据。因此我们开发了一个名为http-api-call的MCP Server,来支持模型到内部API的调用 实现方案 使用用标准…...
如何利用Redis实现延迟队列?
延迟队列概念解析 延迟队列(Delay Queue)是一种特殊的消息队列,核心特性是允许消息在指定的延迟时间后被消费者处理,而非立即消费。它解决了传统队列(FIFO)无法处理“定时任务”或“超时任务”的问题&…...

【刚下赛场!】2025年江西省电子专题赛 - 现场制作:简易数控直流电流源原题
一、题目要求 二、赛场注意事项 1、一定要用铜柱将板子升起来,不然我们剪下来的引脚在测试的时候放在桌子上非常容易导致我们的板子短路(记得把铜柱卸下来再上交作品,不然会被认为是做标记判0分); 2、发下来器件之后…...

材料×工艺×AI:猎板PCB重构汽车电子四层板技术逻辑
一、汽车电子四层板的三大核心挑战 1. 极端环境下的可靠性保障 汽车电子需在-40℃至150℃的剧烈温变、高湿振动等环境中稳定运行。例如,电池管理系统(BMS)要求PCB在高温下阻抗漂移率低于8%,且镀层需具备抗腐蚀能力。猎板PCB通…...

MCP(一)——QuickStart
目录 1. MCP简介2. MCP的优势3. MCP核心4. QuickStart For Server Developers(仅具参考)4.1 MCP核心概念4.2 构建MCP服务器的代码4.2.1 设置MCP服务器实例4.2.2 辅助函数4.2.3 实现工具执行4.2.4 在Cherry-Studio中添加MCP服务器4.2.5 演示4.2.5.1 测试工具get_alerts4.2.5.2 测…...
GCC 版本与C++ 标准对应关系
GCC 版本 与支持的 C 标准(C11、C14、C17、C20、C23) 的对应关系 GCC 版本与 C 标准支持对照表 GCC 版本默认 C 标准C11C14C17C20C23GCC 4.8C98✅ (部分支持)❌❌❌❌GCC 4.9C98✅ (完整支持)❌❌❌❌GCC 5.1C98✅✅ (完整支持)❌❌❌GCC 6.1C14✅✅✅ …...

Spring AOP从0到1
Spring有两大核心: 1、IoC 控制反转 2、AOP 面向切面编程 AOP:切面就是指某⼀类特定问题, 所以AOP也可以理解为面向特定⽅法编程. 引入AOP依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spri…...
JavaScript 中的 Document 对象详解
JavaScript 中的 Document 对象详解 一、Document 对象概述 1. 定义与作用 Document 对象是浏览器中 HTML 文档的入口点,是 Window 对象的属性(即 window.document)。它代表整个 HTML 页面,提供了操作和访问页面内容的方法和属性,是 DOM(文档对象模型)的核心。 2. 核…...
archlinux按键映射按键自定义
我想把右ALT映射成Super键,也就是mod4键位,折腾了半天没有成功。问AI也没有解决,与是只好自己去看wiki了,发现原来很简单。只是我没有clear。 https://wiki.archlinuxcn.org/wiki/Xmodmap 安装xorg sudo pacman -S xorg直接选择…...
【python】字典和数组的数组
一、字典是由键值对(key-value)组成的 因为 results[num] {...} 这种写法是通过键(这里是 num)为 results 赋值,results 就是一个字典(dict)。 在 Python 里,字典是由键值对&#…...

软考IPSEC案例分析
要回忆IPSEC点击这里 题目 5/21 某全国连锁企业的总部和分布在全国各地的30家分公司之间经常需要传输各种内部数据,因此公司决定在总部和各分公司之间建立VPN技术。具体拓扑如下: 配置部分只显示了与总部与分公司1的配置。 根据拓扑完成问题1-问题2。…...

C++(23):容器类<vector>
目录 一、核心概念 二、基本语法 1. 头文件 2. 声明与初始化 三、常用操作 四、具体实例 1、size()、front()、back() 2、push_back()、pop_back()、capacity() 3、reserve() 一、核心概念 Vectors 包含着一系列连续存储的元素,其行为…...