java - 使用 Java Swing 模拟 ASCII 终端
问题描述
我正在尝试为典型的基于 ASCII 的终端创建基于 Java Swing 的模拟。我将终端屏幕的内容作为二维数组,其中每个元素都有一个字符加上前景色和背景色。
最初的(天真的)策略是使用一个JPanel
并使用它的方法在特定坐标处paintComponent(...)
使用方法从数组中简单地绘制每个单独的字符drawString(...)
(使用适当的前景色和背景色处理以及必要的字体度量算法)。
它工作得很好 - 但很痛苦,速度很慢(特别是如果我最大化窗口大小)。
我错过了一些明显的设计明智的东西吗?
解决方案
如果您怀疑代码中存在性能问题,您可能需要查看 Java Swing 的内置 JEditorPane。它可以处理具有各种文本格式的长文档,甚至可以嵌入图像等其他对象。
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JEditorPane.html
推荐阅读
- javascript - 为什么我的 d3 数据中的第一个元素没有更新?
- ruby-on-rails-3 - 安装 aws-sdk-3 后无法启动 Rails 服务器
- angular - 如何将对象从 Angular 发送到 Asp.net Web Api?
- c# - 将此 C++ 浮点数组移植到 C#
- wix - Wix 安装程序在安装时删除了不同的产品
- asp.net-mvc - Http 错误 500 Azure 网站部署问题
- pcfdev - 由于缺少 KVM,无法在 Ubuntu 上启动 PCF Dev (cf dev start)
- python - 将文件从 S3 读入 Python 内存
- php - 如何将html标签放入php序列化数组中
- c# - Linq 模糊搜索