gpt4 book ai didi

java - 仅在 Java SWT 中文本框的最后一行写入

转载 作者:行者123 更新时间:2023-12-02 08:28:08 25 4
gpt4 key购买 nike

我正在开发一个程序,例如Linux中的终端或Windows中的命令提示符,但我是在Linux上开发它,并且不太关心可移植性。

该程序是用 Java 编写的,使用 SWT。

用户在文本框中写入命令,当他按“回车”时,它会读取该行并解释它。

问题是用户在文本框中写入命令,因此他可以在其中的任何位置自由写入。

我想限制他只在文本框的最后一行写入。我不想让他改变光标的位置并以任何方式书写。

提前致谢

最佳答案

我在.NET 中编写了一个类似终端的控件。它不是基于java的,但我认为你可以重用其中的一些逻辑:

http://wpfterminal.codeplex.com/

请注意,我并不想这么快发布这个项目,我是为你做的,所以它可能需要一些清理,以及一些错误跟踪。但无论如何,目前它工作得完美无缺。

您可以在此屏幕截图中看到一个示例(终端集成在一个更大的项目中):
http://images4.hiboox.com/images/4210/0a2809b63e05c3d0cac678962e0e3d5a.jpg

<小时/>

我的解决方案

.

基 native 制

实际上我所做的是定义一个 lastPromptIndex 整数,每次用户按 ENTER 键并出现新提示时,该值都会更新。

之后就很简单了,您只需要在文本框验证输入之前处理任何文本输入即可。如果文本框插入符号位于 lastPromptIndex 之前,则需要引发错误(通常是蜂鸣声)并且必须使文本输入无效,因此不会在文本框。我还自动将插入符号位置设置到文本框的末尾,以便用户可以立即输入一些文本。

扩展

如果插入符号位于提示索引之前,您可以通过查找“UP 键”输入来启用命令完成功能。您需要的只是在输入事件发送到文本框内部机制之前对其进行处理。我不知道 SWT 控件是否允许这样做,但我很确定它们允许这样做,就像任何严肃的 UI 系统一样。

<小时/>

其他解决方案

.

JTERM

我记得我的一个 friend 在Java应用程序中使用了终端,在他的源代码中,我发现if是来自JTerm的控件,看一下:
http://www.acordex.com/vtj/JTerm.html

关于java - 仅在 Java SWT 中文本框的最后一行写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4025735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com