Ответ 1
Message Console показывает одно решение для этого.
Я пытаюсь получить содержимое консоли в textArea в java.
Например, если у нас есть этот код,
class FirstApp {
public static void main (String[] args){
System.out.println("Hello World");
}
}
и я хочу вывести "Hello World" в textArea, какой actionPerformed мне нужно выбрать?
Message Console показывает одно решение для этого.
Один из способов сделать это, установив System OutputStream
в PipedOutputStream
и подключив его к PipedInputStream
, который вы читали, чтобы добавить текст к вашему компоненту, например
PipedOutputStream pOut = new PipedOutputStream();
System.setOut(new PrintStream(pOut));
PipedInputStream pIn = new PipedInputStream(pOut);
BufferedReader reader = new BufferedReader(new InputStreamReader(pIn));
Есть ли у вас ссылка на следующую ссылку? Если нет, то вы должны.
как это http://img122.imageshack.us/img122/5692/dibujoof2.png
Я нашел это простое решение:
Сначала вам нужно создать класс для замены стандартного вывода:
public class CustomOutputStream extends OutputStream {
private JTextArea textArea;
public CustomOutputStream(JTextArea textArea) {
this.textArea = textArea;
}
@Override
public void write(int b) throws IOException {
// redirects data to the text area
textArea.append(String.valueOf((char)b));
// scrolls the text area to the end of data
textArea.setCaretPosition(textArea.getDocument().getLength());
// keeps the textArea up to date
textArea.update(textArea.getGraphics());
}
}
Затем вы заменяете стандарты следующим образом:
JTextArea textArea = new JTextArea(50, 10);
PrintStream printStream = new PrintStream(new CustomOutputStream(textArea));
System.setOut(printStream);
System.setErr(printStream);
Проблема в том, что все выходы будут отображаться только в текстовой области.
Источник с образцом: http://www.codejava.net/java-se/swing/redirect-standard-output-streams-to-jtextarea
Вам придется перенаправить System.out
в пользовательский наблюдаемый подкласс PrintStream
, так что каждая char или строка, добавленная в этот поток, может обновить содержимое textArea (я думаю, это AWT или Swing)
Экземпляр PrintStream
может быть создан с помощью ByteArrayOutputStream
, который будет собирать вывод перенаправленного System.out