本文目录导读:

- 纯 Java 逻辑控制(推荐)
- 使用 HTML 的
<!--[if ...]-->条件注释(有限支持) - 自己的简单模板引擎
- 使用第三方库(如 JSoup 处理 HTML,但不在 JEditorPane 中)
在 JEditorPane 中使用 HTMLEditorKit 进行 HTML 解析时,它并不支持像现代浏览器那样的 JavaScript 逻辑运算(如 或 &&)。HTMLEditorKit 主要用于渲染简单的 HTML 3.2/4.0 内容,不支持动态脚本或复杂的运算。
如果你想在 Java 中通过代码逻辑处理“或”运算(例如根据条件显示不同的 HTML 内容),可以通过以下几种方式实现:
纯 Java 逻辑控制(推荐)
在设置 JEditorPane 内容之前,先用 Java 代码处理逻辑:
import javax.swing.*;
import javax.swing.text.html.*;
public class Example {
public static void main(String[] args) {
JFrame frame = new JFrame();
JEditorPane editorPane = new JEditorPane();
editorPane.setContentType("text/html");
editorPane.setEditable(false);
HTMLEditorKit kit = new HTMLEditorKit();
editorPane.setEditorKit(kit);
// 模拟条件
boolean condition1 = true;
boolean condition2 = false;
// Java 中的"或"运算
if (condition1 || condition2) {
editorPane.setText("<html><body><h1>条件满足</h1></body></html>");
} else {
editorPane.setText("<html><body><h1>条件不满足</h1></body></html>");
}
frame.add(new JScrollPane(editorPane));
frame.setSize(400, 300);
frame.setVisible(true);
}
}
使用 HTML 的 <!--[if ...]--> 条件注释(有限支持)
但 HTMLEditorKit 对条件注释支持非常有限,通常不推荐:
<!--[if true]>这部分会显示<![endif]-->
自己的简单模板引擎
创建一个简单的“或”逻辑替换:
String htmlTemplate = "<html><body>{CONTENT}</body></html>";
String content = "";
boolean showA = true;
boolean showB = false;
if (showA || showB) {
content = "<p>至少一个条件为真</p>";
} else {
content = "<p>所有条件都为假</p>";
}
editorPane.setText(htmlTemplate.replace("{CONTENT}", content));
使用第三方库(如 JSoup 处理 HTML,但不在 JEditorPane 中)
// 先处理逻辑
StringBuilder sb = new StringBuilder();
if (condition1 || condition2) {
sb.append("<div class='active'>活跃状态</div>");
} else {
sb.append("<div class='inactive'>非活跃状态</div>");
}
editorPane.setText("<html><body>" + sb.toString() + "</body></html>");
JEditorPane + HTMLEditorKit 不直接支持 HTML 内的“或”运算,正确的做法是:
- 在 Java 代码中完成所有条件判断
- 根据判断结果动态构建 HTML 字符串
- 最后通过
setText()设置到JEditorPane
这种方法更可控、更可靠,也符合 Java Swing 的架构设计。