You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何<font>标签在Java Swing中失效?JLabel文本着色问题

JLabel部分文字着色问题解决

问题原因

你当前的代码对myArrayList.get(i)里的所有<和>执行了转义(替换成&lt;和&gt;),这会把原本的<font>标签转换成纯文本字符,导致JLabel把它们当成普通内容显示,而不是解析为HTML标签实现着色。

解决方案

根据你的需求场景,分两种情况处理:

场景1:确定列表项中的HTML标签需要生效

如果myArrayList.get(i)里的<font>等标签是故意用来设置样式的,直接去掉<和>的转义逻辑,只处理换行符即可:

myLabel.setText("<html>" + myArrayList.get(i).replaceAll("\n", "<br/>") + "</html>");

场景2:列表项混合了合法HTML标签和普通特殊字符

如果内容里既有需要生效的HTML标签,又有用户输入的普通</>符号(比如文本里的<需要显示成符号而不是标签),可以用正则表达式精准转义非标签内的特殊字符:

String content = myArrayList.get(i);
// 仅转义不在HTML标签结构中的<和>
content = content.replaceAll("(?<!<)\\<(?!/)", "&lt;")
                 .replaceAll("(?<!/)\\>(?!>)", "&gt;");
// 替换换行为HTML换行标签
content = content.replaceAll("\n", "<br/>");
myLabel.setText("<html>" + content + "</html>");

补充说明

第一种方法简单直接,适合内容里的HTML标签都是预设样式的场景;第二种方法通过正则的负向预查,避免转义HTML标签本身的<和>,同时处理普通文本里的特殊字符,兼容性更强。

内容的提问来源于stack exchange,提问作者Andrea Mancini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:02:10