java - 在 GUI JTextArea 中显示 Jtidy 错误/警告消息

标签 java swing jtextarea jtidy

我正在编写一个程序,它使用 jtidy 来清理从 URL 获取的源代码中的 html。我想在 GUI 中的 JTextArea 中显示错误和警告。我如何将警告从打印到标准输出“重新路由”到 JTextArea?我查看了 Jtidy API,没有看到任何可以满足我要求的东西。有人知道我该如何做到这一点,或者是否可能?

//测试 jtidy 选项

public void test(String U) throws MalformedURLException, IOException
{
    Tidy tidy = new Tidy();
    InputStream URLInputStream = new URL(U).openStream();
    File file = new File("test.html");
    FileOutputStream fop = new FileOutputStream(file);

    tidy.setShowWarnings(true);
    tidy.setShowErrors(0);
    tidy.setSmartIndent(true);
    tidy.setMakeClean(true);
    tidy.setXHTML(true);
    Document doc = tidy.parseDOM(URLInputStream, fop);
}

最佳答案

假设 JTidy 将错误和警告打印到标准输出,您可以 temporarily change where System.out calls go :

PrintStream originalOut = System.out;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream myOutputStream = new PrintStream(baos);
System.setOut(myOutputStream);

// your JTidy code here

String capturedOutput = new String(baos.toByteArray(), StandardCharsets.UTF_8);
System.setOut(originalOut);

// Send capturedOutput to a JTextArea
myTextArea.append(capturedOutput);

an analogous method如果您也需要对 System.err 执行此操作。

关于java - 在 GUI JTextArea 中显示 Jtidy 错误/警告消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13282367/

相关文章:

Java将列表的1/3元素复制到新创建的三个列表

java - 声明/初始化变量时出现.class错误?

Java:使用一组 Enum 值作为 SpinnerListModel

Java : detect triple-click without firing double-click

java - JMenu 不会自动取消选择

java - JTextField 和 JTextArea 在程序运行时随机不工作

java - 在从 JTextArea 获取文本的文档中保存文件时如何修复新行

java - 巡航控制批处理文件构建从未完成

java - Hibernate 显示来自 JComboBox 的记录

java - 将单个 JTextArea 与多个 UndoManager 一起使用