使用 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 终端模拟 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何存储变量以供 Java Swing Gui 中的用户输入进一步使用?