java Graphics2D drawString()内容换行问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java Graphics2D drawString()内容换行问题相关的知识,希望对你有一定的参考价值。
String a="阿萨德啊啊aaa啊1238372jhhg";
Graphics2D g;
g.drawString(a,10,20);
怎么让a的内容达到自动换行的效果,要是截取的话里面数字和字母又不等宽了,求大神啊
g.getFontMetrics().charsWidth(data, off, len);这个方法得到长度之后我该怎么弄呢?哥
追答对比下一控件的宽度,太长的就把字符串截断咯,
使用 Java Swing 的 ASCII 终端模拟 [关闭]
【中文标题】使用 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 Graphics2D drawString()内容换行问题的主要内容,如果未能解决你的问题,请参考以下文章
Java 上的 (Graphics g, Graphics2D) 问题