Отображение сообщений об ошибках / предупреждений 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
вместо / как хорошо.