首页> 中国专利> 基于swing的可交互的系统命令行工具及软件

基于swing的可交互的系统命令行工具及软件

摘要

本发明公开了一种基于swing的可交互的系统命令行工具及软件。基于swing的可交互的系统命令行工具,包括:处理单元,用于获取用户输入的命令字符,并发送给操作系统,还用于接收所述操作系统反馈的输出字符,并发送给显示单元;所述显示单元,用于基于swing组件,在界面显示所述输出字符。基于swing的可交互的系统命令行工具可以集成到软件中,如java开发的图形化操作软件,用户在输入操作系统的命令时,不需要在退出软件的运行,单独打开操作系统的命令行工具,可以直接在软件中操作,扩大了软件的功能,大大了便利了用户使用。而且该工具还可以在多个平台上运行,例如,x86、arm系列平台、龙芯等。

著录项

  • 公开/公告号CN113220288A

    专利类型发明专利

  • 公开/公告日2021-08-06

    原文格式PDF

  • 申请/专利权人 瀚高基础软件股份有限公司;

    申请/专利号CN202110577958.7

  • 发明设计人 张元超;冯路;杨国卿;苗健;

    申请日2021-05-26

  • 分类号G06F8/34(20180101);G06F40/126(20200101);

  • 代理机构11010 工业和信息化部电子专利中心;

  • 代理人罗丹

  • 地址 250101 山东省济南市高新区新泺大街2117号铭盛大厦20层2001室

  • 入库时间 2023-06-19 12:07:15

说明书

技术领域

本发明涉及计算机技术领域,尤其涉及一种基于swing的可交互的系统命令行工具及软件。

背景技术

目前,各个操作系统的命令行工具(如windows的CMD和linux的Terminal)都只能在操作系统中独立运行,无法嵌入到所开发的软件中,这给软件的功能实现和易用性带来了重大问题,且也不利于用户的操作,用户需要不断切换操作系统的命令行工具和软件,用户体验性很差。

发明内容

本发明实施例提供一种基于swing的可交互的系统命令行工具及软件,用以解决现有技术中操作系统的命令行工具无法嵌入到所开发的软件中的问题。

根据本发明实施例的基于swing的可交互的系统命令行工具,包括:

处理单元,用于获取用户输入的命令字符,并发送给操作系统,还用于接收所述操作系统反馈的输出字符,并发送给显示单元;

所述显示单元,用于基于swing组件,在界面显示所述输出字符。

根据本发明的一些实施例,所述处理单元,包括:

输入处理器,用于监听所述命令字符,并对所述命令字符进行处理后发送至所述操作系统;

输出处理器,用于接收所述操作系统反馈的输出字符,并对所述输出字符处理后发送至所述显示单元。

根据本发明的一些实施例,所述输入处理器,用于:

判断所述命令字符的类型;

当所述命令字符为文本字符,则将所述命令字符直接以字节方式发送至所述操作系统;

当所述命令字符为控制字符,则对所述命令字符进行编码,并将编码后的命令字符发送至所述操作系统。

根据本发明的一些实施例,所述输出处理器,用于:

判断所述输出字符的类型;

当所述输出字符为文本字符,则将所述输出字符直接以字节方式发送至所述显示单元;

当所述输出字符为控制字符,则对所述输出字符进行解码,并将解码后的输出字符发送至所述显示单元。

根据本发明的一些实施例,所述显示单元,用于:

基于swing组件,在界面显示所述处理后的输出字符。

根据本发明的一些实施例,所述命令字符的控制字符包括以下字符中的至少一种:回车字符、制表字符、删除字符、空格字符,上键字符、下键字符、左键字符、右键字符。

根据本发明的一些实施例,所述输出字符的控制字符包括光标。

根据本发明的一些实施例,所述光标的状态包括第一状态、第二状态、以及第三状态;

所述显示单元,用于:

当所述界面被选中,通过刷新所述界面,使得所述光标在第一状态和第二状态间交替呈现;

当所述界面未被选中,所述光标保持第三状态;

存储历史文本字符;

根据当前界面的大小,获取对应个数的历史文本字符以及最新文本字符并显示。

根据本发明的一些实施例,所述处理单元通过虚拟终端PTY与所述操作系统进行交互。

根据本发明实施例的软件,所述软件集成有如上所述的基于swing的可交互的系统命令行工具。

采用本发明实施例,通过swing实现操作系统命令的操作界面,并可以执行交互式的系统命令,不仅可以将操作系统命令行操作集成到java图形化软件中,还能实现跨平台运行,包括:x86、arm系列平台、龙芯。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。在附图中:

图1是本发明实施例中基于swing的可交互的系统命令行工具结构示意图;

图2是本发明实施例中文本字符存储结构示意图。

具体实施方式

下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。

现在有一些实现远程连接linux的软件(如xshell)也可以执行本地操作系统的命令。但只能执行简单的系统命令,无法完成交互式系统命令的执行(如类似oracle的sqlplus命令,postgresql的psql命令,mysql的mysql命令),使用上受到极大的限制。而且,需要独立运行,无法嵌入集成到其他软件中使用,且非java语言开发,无法在java图形化软件中集成。

基于此,本发明第一方面实施例提出一种基于swing的可交互的系统命令行工具,包括:

处理单元,用于获取用户输入的命令字符,并发送给操作系统,还用于接收操作系统反馈的输出字符,并发送给显示单元;

显示单元,用于基于swing组件,在界面显示输出字符,换言之,以界面的形式显示输出字符。

本发明实施例的基于swing的可交互的系统命令行工具可以集成到软件中,如java开发的图形化操作软件,用户在输入操作系统的命令时,不需要在退出软件的运行,单独打开操作系统的命令行工具,可以直接在软件中操作,扩大了软件的功能,大大了便利了用户使用。而且该工具还可以在多个平台上运行,例如,x86、arm系列平台、龙芯等。

在上述实施例的基础上,进一步提出各变型实施例,在此需要说明的是,为了使描述简要,在各变型实施例中仅描述与上述实施例的不同之处。

根据本发明的一些实施例,处理单元,包括:

输入处理器,用于监听命令字符,并对命令字符进行处理后发送至操作系统;例如,通过监听键盘的输入操作来获取用户输入的命令字符。

输出处理器,用于接收操作系统反馈的输出字符,并对输出字符处理后发送至显示单元。

根据本发明的一些实施例,输入处理器,用于:

判断命令字符的类型;

当命令字符为文本字符,则将命令字符直接以字节方式发送至操作系统;

当命令字符为控制字符,则对命令字符进行编码,并将编码后的命令字符发送至操作系统。

根据本发明的一些实施例,输出处理器,用于:

判断输出字符的类型;

当输出字符为文本字符,则将输出字符直接以字节方式发送至显示单元;

当输出字符为控制字符,则对输出字符进行解码,并将解码后的输出字符发送至显示单元。

根据本发明的一些实施例,显示单元,用于:

基于swing组件,在界面显示处理后的输出字符,换言之,以界面的形式显示处理后的输出字符。界面以swing组件中的panel提供,可集成使用。

根据本发明的一些实施例,命令字符的控制字符包括以下字符中的至少一种:回车字符、制表字符、删除字符、空格字符,上键字符、下键字符、左键字符、右键字符。

根据本发明的一些实施例,输出字符的控制字符包括光标。如控制字符中出现1A,则代表需要将光标上移一行显示。

根据本发明的一些实施例,光标的状态包括第一状态、第二状态、以及第三状态;

显示单元,用于:

当界面被选中,通过刷新界面,使得光标在第一状态和第二状态间交替呈现;

当界面未被选中,光标保持第三状态;

存储历史文本字符;

根据当前界面的大小,获取对应个数的历史文本字符以及最新文本字符并显示。

例如,显示单元在显示光标状态时,因为光标需要闪动的效果,所以需要不断的对界面进行刷新重绘,界面重绘的前提条件是当前界面是被选中的。光标有三种状态,分别是:有色填充矩形(第一状态),隐藏(第二状态)和有框无填充(第三状态)。当界面被选中时,光标状态为第一状态和第二状态交替呈现,光标的交替呈现通过刷新整个界面实现,刷新界面时不仅需要变换光标的状态,还需要对字符内容进行重新打印;当界面未被选中时,光标状态为第三状态,此时界面不再进行重绘。

显示单元在显示字符内容时,因为界面需要不断的重绘,所以界面上的字符是需要进行存储的,防止重绘时丢失。界面字符内容分为两部分:最新字符内容和历史字符内容。最新字符内容是指最新的需要在界面显示的字符;历史字符内容是已经显示过的,且无法在当前界面打印的字符,主要在进行界面滚动时才会显示历史字符。不管是最新字符内容还是历史字符内容,它们都是需要按照一定的数据结构进行存储。图2是文本字符存储结构示意图,这里要说明的是,字符内容的存储结构分别有横向和纵向两个列表组成,横向列表存储每一行的字符内容,纵向列表存储所有的行对象。

另外,需要说明的是,界面的绘制包含光标的打印和字符的打印,光标打印主要是每次刷新时交替变换状态,这里需要注意的是光标位置会根据绘制的内容发生改变。字符打印的基本单位是单个字符,每次绘制界面前,会根据当前界面的大小重新计算需要打印的字符对象列表,在绘制过程中,遍历这个列表中的每一个字符行对象,并且遍历每一个字符行对象中的每个字符进行绘制,绘制的同时需要不断的更新当前的光标位置,以便光标的绘制。

根据本发明的一些实施例,处理单元通过虚拟终端PTY与操作系统进行交互。

如果命令字符是文本字符,输入处理器会将文本字符直接以字节方式发送给PTY;如果命令字符是控制字符,输入处理器会先对命令字符进行初步的处理,主要包括对命令字符进行编码,然后将处理后的命令字符发送给PTY。

PTY接收到输入处理器发送的处理后的命令字符后,再转交给操作系统进行处理,并将操作系统的处理结果发送给输出处理器。

PTY可以由操作系统提供,输入的命令字符在操作系统中的具体含义由PTY完成。

下面参照图1-图2以一个具体的实施例详细描述根据本发明实施例的基于swing的可交互的系统命令行工具。值得理解的是,下述描述仅是示例性说明,而不是对本发明的具体限制。凡是采用本发明的相似结构及其相似变化,均应列入本发明的保护范围。

如图1所示,本发明实施例的基于swing的可交互的系统命令行工具,包括输入处理器、输出处理器、和显示单元(即图中所示界面)。

输入处理器用于创建监听,以监听键盘的输入操作,在输入处理器内部判断输入的命令字符是文本字符还是控制字符。如果是文本字符,则直接以字节方式发送给PTY;如果是控制字符,需要先由输入处理器进行初步的处理,主要对命令字符进行编码,然后将处理后的命令字符发送给PTY。

PTY用于接收输入处理器发送的命令字符,并转交给操作系统进行处理,然后将处理结果发送给输出处理器。

输出处理器用于接收PTY返回的输出字符。这里的输出字符有两种类型,分别是文本字符和控制字符。如果接收到的是普通的文本字符,则直接交由显示单元的界面进行打印;如果接收到的是控制字符,需要对控制字符进行解析,然后根据结果进行相应的操作。

这里需要说明的是,需要区分输入处理器和输出处理器中的控制字符,在不同的处理器中控制字符代表不同的含义。在输入管理器中,控制字符是指回车、制表符、删除、空格,上键、下键、左键、右键等非可显示的字符。在输出管理器中,控制字符是指来控制打印行为的字符,它主要来控制界面中光标的位置(光标代表下次字符打印的开始位置,以闪动的方式展现),如控制字符中出现1A,则代表需要将光标上移一行显示。

显示单元负责打印需要显示的输出字符,在界面上看到的字符并不是直接由键盘输入的,而是由输出处理器控制的。

界面打印主要包含两部分,分别是字符内容和光标,下边详细说明界面的打印原理。

1、光标状态:

因为光标需要闪动的效果,所以需要不断的对界面进行刷新重绘,界面重绘的前提条件是当前界面是被选中的。光标有三种状态,分别是:有色填充矩形(第一状态),隐藏(第二状态)和有框无填充(第三状态)。当界面被选中时,光标状态为第一状态和第二状态交替呈现,光标的交替呈现通过刷新整个界面实现,刷新界面时不仅需要变换光标的状态,还需要对字符内容进行重新打印;当界面未被选中时,光标状态为第三状态,此时界面不再进行重绘。

2、字符内容结构:

因为界面需要不断的重绘,所以界面上的字符是需要进行存储的,防止重绘时丢失。界面字符内容分为两部分:最新字符内容和历史字符内容。最新字符内容是指最新的需要在界面显示的字符;历史字符内容是已经显示过的,且无法在当前界面打印的字符,主要在进行界面滚动时才会显示历史字符。不管是最新字符内容还是历史字符内容,它们都是需要按照一定的数据结构进行存储。图2是文本字符存储结构示意图,如图2所示,字符内容的存储结构分别有横向和纵向两个列表组成,横向列表存储每一行的字符内容,纵向列表存储所有的行对象。

3、界面绘制:

界面的绘制包含光标的打印和字符的打印,光标打印主要是每次刷新时交替变换状态,已经在1中详细说明,这里需要注意的是光标位置会根据绘制的内容发生改变。字符打印的基本单位是单个字符,每次绘制界面前,会根据当前界面的大小重新计算需要打印的字符对象列表,在绘制过程中,遍历这个列表中的每一个字符行对象,并且遍历每一个字符行对象中的每个字符进行绘制,绘制的同时需要不断的更新当前的光标位置,以便光标的绘制。

本发明实施例,能够真正实现操作系统命令行的执行,因为基于操作系统的PTY机制,可以运行操作系统中的所有命令,命令可以是交互式的,也可以是非交互式的。并且能够集成到基于java开发的图形化软件中,实现既可以独立运行,也可以嵌入集成到其他基于java的图形化软件使用,满足大多数的使用要求,基于linux底层PTY实现,使用java开发,与平台架构无关,使用范围广泛。

需要说明的是,以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

本发明第二方面实施例提出一种软件,软件集成有如第一方面实施例所述的基于swing的可交互的系统命令行工具。

本发明实施例的软件,通过集成基于swing的可交互的系统命令行工具,用户在输入操作系统的命令时,不需要在退出软件的运行,单独打开操作系统的命令行工具,可以直接在软件中操作,扩大了软件的功能,大大了便利了用户使用。

根据本发明的一些实施例,所述软件可以为java开发的图形化操作软件。

需要说明的是,在本说明书的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。

术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。而且,不应将位于括号之内的任何参考符号构造成对权利要求的限制。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号