- DOI:
10.13738/j.cnki.acc.qklw60536
- 专辑:
科学Ⅰ辑;信息科技
- 专题:
信息、科学;综合科技
- 分类号:
G90;N92
摘要:本文针对当前电脑自带剪贴板不方便用户进行持续办公的问题,设计并实现了一个用于剪贴板功能增强的程序,最终设计并实现了一个基于Java的实时剪贴板管理工具。该系统结合了Spring Boot框架和Swing技术,实现了剪贴板内容的实时监听、界面交互以及剪贴板历史记录存储等功能,通过模块化设计和回调机制,提升了系统的可维护性和扩展性。
关键词:剪贴板增强工具;实时监听;回调机制
1.研究内容
该系统结合Spring Boot框架和Swing技术,集成了剪贴板实时监听、历史记录存储与管理、界面交互等功能模块。通过回调机制实现监听模块与界面模块的解耦。
本系统的研究期望为为日常办公、开发中的剪贴板管理提供一个高效、实用的解决方案,为类似工具的设计与实现提供一定的参考价值。
2.需求分析
2.1系统目标及背景
剪贴板作为常用的跨程序数据传输工具,广泛应用于文本复制,图像粘贴等场景,然而,现有的剪贴板功能较为单一,无法满足用户对剪贴板历史记录管理和快速查找的需求。本系统旨在开发一个剪贴板内容管理工具,能够实时监听剪贴板内容变化,保存历史记录,并允许用户快速查看和操作历史记录,从而提升工作效率。
2.2功能需求
剪贴板内容实时捕获:系统可以实时监听剪贴板内容的变化,当用户复制文本时,能够及时捕获并保存到历史记录中。
剪贴板历史记录管理:系统可以保存和展示剪贴板的历史记录,用户可以浏览或清空所有记录。
内容复制与粘贴:用户可以通过点击界面上的任意一条历史记录,将其内容重新复制到系统剪贴板上,方便再次粘贴使用。
清空历史记录:系统允许用户一键清空所有历史记录,用于保护用户隐私或者清理数据。
3.系统设计与实现
3.1系统总体架构
剪贴板管理系统采用模块化设计,主要包括监听模块、存储模块和界面交互模块等。每个模块负责不同的功能,整个剪贴板管理系统通过各个模块之间的协作来实现剪贴板的实时监听、内容存储和界面交互。
1.模块说明
监听模块:实时监听剪贴板内容的变化,当用户复制新的内容到剪贴板时,该模块将监听这个变化,执行相应的操作。该模块使用轮询机制定期检查剪贴板内容变化,通过回调函数通知其他模块更新界面。
存储模块:将捕获到的剪贴板内容持久化保存到数据库中,监听模块会在每一次剪贴板内容发生变化时触发存储模块进行数据存储,该模块通过JPA与数据库进行交互,确保剪贴板历史记录的持久性。
界面交互模块:该模块提供一个图形用户界面,用户可以通过此界面查看和操作剪贴板历史记录,历史记录通过JList进行展示,用户可以通过点击历史记录将其复制回剪贴板。该模块还支持清空历史记录、退出程序等功能。
2.模块之间的关系
监听模块与存储模块:当用户执行复制操作使得剪贴板内容发生变化时,监听模块实时捕捉内容,将数据信息传递给存储模块,存储模块将得到的数据信息保存到数据库,并进行持久化保存。
存储模块与界面交互模块:存储模块的数据变化会通过回调函数通知界面模块,界面模块实时进行更新,使得剪贴板的历史记录信息快速显示。
界面交互模块与用户:用户可以通过界面交互模块与该系统进行交互,查看剪贴板的历史记录,通过界面交互模块,用户可以通过点击某条历史记录来使该条历史记录复制到剪贴板,用户也可一键清除剪贴板历史记录。
3.2核心技术与实现
该系统的核心功能实现主要涉及剪贴板监听机制、数据库设计与存储以及界面功能实现,通过模块间的协作实现了剪贴板历史记录的管理和展示。
1.剪贴板监听机制
剪贴板监听机制通过ClipboardListener类来实现,该类借用Java AWT提供的剪贴板相关功能,通过轮询机制实时捕捉剪贴板内容的变化,将其存储到数据库中,系统接下来再通过回调函数更新用户界面使之显示最新的剪贴板内容。
(1)线程实现与轮询机制
首先,在ClipboardListener中,使用一个单独的线程定时检查剪贴板内容,每隔一秒进行一次检查。
clipboard.getContents()获取剪贴板当前内容,DataFlavor.stringFlavor判断剪贴板内容是否为字符串类型,Thread.sleep(1000)每隔1秒检查剪贴板内容是否发生变化。saveToDatabase(text)当剪贴板内容变化时,调用该方法将新的内容保存到数据库。
(2)回调机制与界面更新
ClipboardListener通过接口ClipboardUpdateCallback提供了回调函数onClipboardUpdated(),一旦剪贴板内容变化,它会调用ClipboardUI中的loadClipboardHistory()方法来更新界面的历史记录。ClipboardListener会在每一次剪贴板内容发生变化时通过回调函数通知界面交互模块进行更新。
2.数据存储
系统通过ClipboardEntry实体类来表示具体数据的数据结构,剪贴板中的内容被存储在MySQL数据库中,ClipboardListener会将数据持久保存到数据库中。
在剪贴板内容发生变化时,ClipboardListener会调用repository.save( )方法将内容保存到数据库中,这样每条剪贴板内容都可以在数据库中查看,用户也可以随时查看剪贴板的历史记录。
3.界面功能实现
该系统通过Swing技术搭建用户界面,查看剪贴板历史记录、清空历史记录等功能通过ClipboardUI类实现,该模块通过JList组件展示历史记录,并通过事件响应机制实现用户与界面的交互。
历史记录展示:ClipboardUI类使用JList来动态显示剪贴板历史记录,当数据库中又有新的剪贴板数据时,用户界面会自动更新来显示最新的历史记录。JList通过DefaultListModel动态管理和更新历史记录,每次调用loadClipboardHistory()方法时,界面会加载数据库中的所有历史记录并展示。
点击历史记录进行复制:当用户点击某一条历史记录时,系统会把该记录复制到剪贴板中,用户可以在其他地方进行粘贴使用。当用户点击某一条历史记录时,系统会通过ListSelectionListener来监听用户的点击操作,通过调用copyToClipboard方法并通过StringSelection将选中的内容复制回系统的剪贴板。
清空历史记录:在ClipboardEntryRepository接口中调用deleteAll()方法删除所有历史记录,将数据库表中所有历史记录删除。通过clear()方法来清空DefaultListModel中的数据,更新用户界面使得历史记录为空。
4.功能测试与结果分析
4.1实时捕获与保存
系统实时监听剪贴板内容变化,并将变化的内容自动保存到数据库中,以便后续查看和操作。
测试结果:该功能成功实现了剪贴板内容的实时监听,并能够将捕获的内容及时保存到数据库中。经过测试,系统能够及时捕获剪贴板内容变化。
4.2历史记录的加载与展示
系统在启动时加载并展示历史记录,实时更新。当剪贴板内容发生变化时,历史记录也会实时更新。
测试结果:历史记录能够正常加载并展示,并且可以随着剪贴板内容的变化,实时更新历史记录,系统自动将新的内容添加到历史记录中,并且在历史记录列表中显示。
4.3复制到剪贴板功能
用户点击界面中历史记录中任意一条记录,系统会将其复制回剪贴板,以便用户粘贴使用。
测试结果:该功能实现了通过点击历史记录中的内容将其复制回系统剪贴板的功能,经过测试,复制操作稳定,能够实现该功能,并支持粘贴到其他地方。
5.结语
本项目开发了一个剪贴板内容管理工具,该工具能够实时监听系统剪贴板的内容变化,将历史记录保存到数据库中,可以提供界面供用户查看、操作和清空剪贴板历史记录,并通过线程和回调机制实现剪贴板内容的实时捕获和更新。
6.参考文献
[1]包张擂,李清宝,贾天江,等.基于剪贴板监控的电子文档多级保护[J].计算机与现代化,2015,(06):12-18.
[2]王香菊.利用剪贴板实现不同应用程序间数据转换的设计方案[J].信息记录材料,2018,19(02):97-98.
[3]俞木发.复制/粘贴不走寻常路[J].电脑爱好者,2017,(09):40-41.
[4]倚楼.井然有序用好增强版剪切板[J].电脑爱好者,2016,(19):54-55.
项目名称:《智能剪贴板设计与开发》
项目编号:X202410452359
指导老师:王立波
作者简介:
柳汝烨(2004-),男,山东省泰安市,本科在读,研究方向:软件工程;
赵玉秀(2004-),女,山东省泰安市,本科在读,研究方向:通信工程;
翟明洋(2003-),男,山东省枣庄市,本科在读,研究方向:软件工程;
王冉(2004-),女,山东省菏泽市,本科在读,研究方向:软件工程;
柳泉灵(2004-),女,山东省青岛市,本科在读,研究方向:通信工程;
高婕(2004-),女,山东省潍坊市,本科在读,研究方向:通信工程;
相关文献推荐
- 节点文献
- 读者推荐
- 相关基金文献
- 关联作者
- 相关视频
- 批量下載
