使用 Java Swing 的 ASCII 终端模拟 [关闭]

Posted

技术标签:

【中文标题】使用 Java Swing 的 ASCII 终端模拟 [关闭]【英文标题】:ASCII terminal simulation using Java Swing [closed] 【发布时间】:2021-11-30 13:29:24 【问题描述】:

我正在尝试为典型的基于 ASCII 的终端创建基于 Java Swing 的模拟。我将终端屏幕的内容作为二维数组,其中每个元素都有一个字符加上前景色和背景色。

最初的(天真的)策略是使用JPanel 并使用其paintComponent(...) 方法在特定坐标处使用drawString(...) 方法从数组中简单地绘制每个单独的字符(使用适当的前景和背景颜色处理以及必要的字体度量算法)。

它运行良好 - 但令人痛苦,速度慢得无法使用(尤其是当我最大化窗口大小时)。

我是否遗漏了一些明显的设计明智的东西?

【问题讨论】:

很难说没有minimal reproducible example 作为您问题的一部分,但我的猜测是您用Thread.sleep 或一些长期运行的进程阻止了Event Dispatch Thread。 【参考方案1】:

如果您怀疑代码中存在性能问题,您可能需要查看 Java Swing 的内置 JEditorPane。它可以处理具有各种文本格式的长文档,甚至可以嵌入图像等其他对象。

https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JEditorPane.html

【讨论】:

以上是关于使用 Java Swing 的 ASCII 终端模拟 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

北斗4G遥测终端 北斗4G双模通信遥测终端机

如何存储变量以供 Java Swing Gui 中的用户输入进一步使用?

Java Swing 文本字段中的 ANSI 颜色

java的swing组件的使用

如果要在java中使用文件处理一定要使用java.swing包

JAVA语言实现简单登录界面