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

Java Swing-1.基本概念及组件

Swing 基本概念及组件

前序

随着网络的发展 ,java Swing 不在受主流的关注,桌面版应用 开发也出现了更方便的语言和相关的脚手架;

  • 之所以重提 Swing
  1. 对于一些简单的桌面场景它还是可以满足的
  2. 对于原本学习Java的同学,学习swing 会比学习另外一个语言的学习成本低
  3. Java 如今版本已经更新到 jdk 22,依旧保留这Swing,说明虽不是主流,但仍有价值

  • 适合人群
  1. 本身就会Java
  2. 只是想开发一些常用,或日用的小工具,而非大型或对项目样式等要求非常多的系统。

  • 不适合人群
    不会java人群,建议直接学习一门开发桌面版的主流语言或脚手架。人的精力本就有限,可以将精力花费在另外一个更有潜力的东西上

概念

Swing 用于构建图形用户界面(GUI)的Java库类,提供一些列的组件和布局管理器。(开发桌面版应用用的。如大Windows 上的 office系列软件等软件)
Swing 组件采用MVC(模型-视图-控制器)设计模式,模型用于控制组件状态;视图展现组件;控制器控制事件和组件做出相应的响应。而Swing 使用UI 代理对视图 和控制器进行了封装。所以又可成为 (模型-代理)

Swing与AWT :
Swing 比AWT 更优秀,样式更多,一部分Swing 是在AWT 的基础上开发的;总体有点是:

  • 可增加提示信息
  • 可增加图标ICON
  • 支持可插拔外观(皮肤)
  • 支持边框

基本组件

容器

可分为两大类 Window 和 Panel

  • Window 为独立的顶级窗口

    • JFrame:窗口

    • JDialog: 对话框

    • JApplet:java 小程序

    • JWindow:无边框窗口

  • Panel:可放其他组件,但不可单独存在必须依赖于其他容器

    • JSplitPane:分隔面板
    • JOptionPane :简单对话框
    • JTabbedPane:标签页
    • JLayeredPane:可重叠的容器
    • JDesktopPane:内部窗口

事件

高级事件和低级事件

  • 低级事件:绑定特定的动作,(键盘事件,鼠标事件)如点击 ,放大,缩小,关闭等
  • 高级事件:通俗点就是绑定多个动作;文本事件,选择事件;

菜单

  • JMenuBar: 菜单块,菜单的容器
  • JMenu: 单个菜单的容器,也可做为单个菜单用
  • JPopupMenu:右键菜单
  • JMenuItem: 单个菜单
  • JCheckboxMenuItem: 可多选的菜单
  • JRadioButtonMenuItem:单选菜单
  • JMenuShortcut:菜单快捷键

表单

  • JComboBox: 下拉列表
  • JFileChooser: 文件选择器
  • JScrollBar: 滚动条
  • JLIst: 列表框
  • JRadioButton:单选按钮
  • JCheckBox: 复选框组件
  • JSlider: 滑动条
  • JProgressBar:进度条
  • JTable: 表格
  • JTree:树形结构
  • JButton:按钮
  • JLable: 标签
  • JTextField: 单行文本框
  • JTextArea:多行文本
  • JToolBar: 工具条
  • JTextPane:自定义编辑器

边框

  • LineBorder: 边框线的颜色厚度
  • MatteBorder:边框的图案颜色
  • BevelBorder:立体边框
  • TitledBorder: 边框标题
  • CompoundBorder:组合边框

http://www.kler.cn/a/404165.html

相关文章:

  • aws凭证(一)凭证存储
  • Python简介以及解释器安装(保姆级教学)
  • iOS应用网络安全之HTTPS
  • Linux 服务器使用指南:从入门到登录
  • Elastic 和 Red Hat:加速公共部门 AI 和机器学习计划
  • 每日一题&移动语义
  • [每日一氵] 拆分 pip install git+https://github.com/xxx/xx.git@bece3d4
  • 优化 Solana 程序
  • 嵌入式硬件杂谈(四)-高速板PCB设计 高速信号全面讲解 蛇形线 等长线 差分对 阻抗对
  • Go语言并发控制:sync.Mutex、sync.RWMutex和sync.WaitGroup详解
  • ML 系列:第 26 节 - 连续概率分布(均匀分布)
  • 【数据结构】【线性表】栈的基本概念(附c语言源码)
  • Android Studio不显示需要的tag日志解决办法《All logs entries are hidden by the filter》
  • Stable diffusion详细讲解
  • JDBC 调用带输入和输出参数的存储过程
  • 【 模型】 开源图像模型Stable Diffusion入门手册
  • 实时数仓:Lambda架构和Kappa架构有什么联系和区别
  • 点餐管理系统设计与实现(Java+SpringBoot+MySql)
  • quick 2 — qml 与c++的混合编程
  • 熟悉的 Docker,陌生的 Podman
  • undefined 和 null 区别?
  • Linux 系统下的硬件视频加速
  • MyBatis实践:提高持久化层数据处理效率
  • 1、HCIP之RSTP协议与STP相关安全配置
  • Android App获取自己的公网IP地址
  • Elasticsearch面试内容整理-实践与应用场景