Отображение сообщений об ошибках / предупреждений Jtidy в графическом интерфейсе JTextArea

Я пишу программу, которая использует jtidy для очистки HTML от исходного кода, полученного из URL. Я хочу отображать ошибки и предупреждения в графическом интерфейсе, в 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);
}

1 ответ

Решение

Предполагая, что JTidy печатает ошибки и предупреждения на стандартный вывод, вы можете просто временно изменить System.out звонки идут:

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);

Существует аналогичный метод, если вам нужно сделать это для System.err вместо / как хорошо.

Другие вопросы по тегам