首页 > 解决方案 > 使用 Java Swing 模拟 ASCII 终端

问题描述

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

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

它工作得很好 - 但很痛苦,速度很慢(特别是如果我最大化窗口大小)。

我错过了一些明显的设计明智的东西吗?

标签: javaswingawt

解决方案


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

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


推荐阅读