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

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

相关文章:

  • Mac 在恢复模式下出现 旋转地球图标 但进度非常缓慢
  • Oracle 内存优化
  • java中的Servlet3.x详解
  • sparkSQL读入csv文件写入mysql
  • 10.8 LangChain三大模块深度实战:从模型交互到企业级Agent工具链全解析
  • 多模态大语言模型arxiv论文略读(八十一)
  • SuperYOLO:多模态遥感图像中的超分辨率辅助目标检测之论文阅读
  • 贪心算法应用:最大匹配问题详解
  • 算法岗实习八股整理——深度学习篇(不断更新中)
  • 软件工程各种图总结
  • MySQL开发规范
  • 互联网大厂Java面试:从Spring到微服务的深度探讨
  • 大模型deepseek与知识图谱的实践
  • 【数据结构】2-3-3单链表的查找
  • 离散文本表示
  • spark数据处理练习题详解【下】
  • [论文品鉴] DeepSeek V3 最新论文 之 MHA、MQA、GQA、MLA
  • Linux编译rpm包与deb包
  • 用 UniApp 开发 TilePuzzle:一个由 CodeBuddy 主动驱动的拼图小游戏
  • 基于Spring Cloud Sentinel自研Slot扩展实战
  • 鸿蒙电脑正式发布,国产操作系统在个人电脑领域实现重要突破
  • 看展 | 黄永玉新作展,感受赤子般的生命力
  • 2人恶意传播刘国梁谣言被处罚,媒体:以法律利剑劈谣斩邪,加快推进依法治体
  • 辽宁援疆前指总指挥王敬华已任新疆塔城地委副书记
  • 马上评|科学红毯,让科学家成为“最亮的星”
  • “三个集中”之后:图说浦东新区28次撤乡并镇