第9章 组件及事件处理

news2025/5/19 11:54:16

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,高height

public 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 把按钮绑定到键盘

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2379260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用golang实现二叉搜索树(BST)

目录 一、概念、性质二、二叉搜索树的实现1. 结构2. 查找3. 插入4. 删除5. 中序遍历 中序前驱/后继结点 一、概念、性质 二叉搜索树(Binary Search Tree),简写BST,又称为二叉查找树 它满足: 空树是一颗二叉搜索树对…

服务器防文件上传手写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…

计算机的基本组成与性能

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、隐式实例化&#xff1a;让编译器根据实参推演模板参数的实际类型2.4.2、显示实例化&#xff1a;在函数名后的<>中指定模板参数的实际类型 …

【大模型系列】logprobs(对数概率)参数

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

C语言内存函数与数据在内存中的存储

一、c语言内存函数 1、memcpy函数是一个标准库函数&#xff0c;用于内存复制。功能上是用来将一块内存中的内容复制到另一块内存中。用户需要提供目标地址、源地址以及要复制的字节数。例如结构体之间的复制。 memcpy函数的原型是&#xff1a;void* memcpy&#xff08;void* …

通过MCP让LLM调用系统接口

场景 MCP的出现大大丰富了LLM的功能&#xff0c;对于存量系统&#xff0c;我们希望能让模型调用已有的接口&#xff0c;以最小的成本让AI能够获取系统内部数据。因此我们开发了一个名为http-api-call的MCP Server&#xff0c;来支持模型到内部API的调用 实现方案 使用用标准…

【刚下赛场!】2025年江西省电子专题赛 - 现场制作:简易数控直流电流源原题

一、题目要求 二、赛场注意事项 1、一定要用铜柱将板子升起来&#xff0c;不然我们剪下来的引脚在测试的时候放在桌子上非常容易导致我们的板子短路&#xff08;记得把铜柱卸下来再上交作品&#xff0c;不然会被认为是做标记判0分&#xff09;&#xff1b; 2、发下来器件之后…

材料×工艺×AI:猎板PCB重构汽车电子四层板技术逻辑

一、汽车电子四层板的三大核心挑战 1. 极端环境下的可靠性保障 汽车电子需在-40℃至150℃的剧烈温变、高湿振动等环境中稳定运行。例如&#xff0c;电池管理系统&#xff08;BMS&#xff09;要求PCB在高温下阻抗漂移率低于8%&#xff0c;且镀层需具备抗腐蚀能力。猎板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 测…

Spring AOP从0到1

Spring有两大核心&#xff1a; 1、IoC 控制反转 2、AOP 面向切面编程 AOP&#xff1a;切面就是指某⼀类特定问题, 所以AOP也可以理解为面向特定⽅法编程. 引入AOP依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spri…

软考IPSEC案例分析

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

C++(23):容器类<vector>

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

Hugo 安装保姆级教程(搭建个人blog)

Hogo 安装保姆级教程 友链 参考文章&#xff1a; https://blog.csdn.net/xianyun_0355/article/details/140261279 前言 Hugo 是 Go 编写的静态网站生成器&#xff0c;速度快&#xff0c;易用&#xff0c;可配置。作为一款跨平台开源建站系统&#xff0c;当前提供 Windows&…

tomcat查看状态页及调优信息

准备工作 先准备一台已经安装好tomcat的虚拟机&#xff0c;tomcat默认是状态页是默认被禁用的 1.添加授权用户 vim /usr/local/tomcat/conf/tomcat-users.xml22 <role rolename"manager-gui"/>23 <user username"admin" password"tomcat&q…

从坏道扫描到错误修复:HD Tune实战指南

一、硬盘检测的必要性 随着计算机使用时间的增加&#xff0c;机械硬盘和固态硬盘都会出现不同程度的性能衰减。定期进行硬盘健康检查可以&#xff1a;及时发现潜在故障&#xff1b;预防数据丢失风险&#xff1b;掌握存储设备实际状态。 二、HD Tune功能解析 性能测试&#x…

将嵌入映射到 Elasticsearch 字段类型:semantic_text、dense_vector、sparse_vector

作者&#xff1a; Andre Luiz 讨论如何以及何时使用 semantic_text、dense_vector 或 sparse_vector&#xff0c;以及它们与嵌入生成的关系。 通过这个自定进度的 Search AI 实践学习亲自体验向量搜索。你可以开始免费云试用&#xff0c;或者在本地机器上尝试 Elastic。 多年来…