Подтвердить что ты не робот

Как перенаправить содержимое консоли в textArea на Java?

Я пытаюсь получить содержимое консоли в textArea в java.

Например, если у нас есть этот код,

class FirstApp {
    public static void main (String[] args){
        System.out.println("Hello World");
    }
}

и я хочу вывести "Hello World" в textArea, какой actionPerformed мне нужно выбрать?

4b9b3361

Ответ 1

Message Console показывает одно решение для этого.

Ответ 2

Один из способов сделать это, установив 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));

Есть ли у вас ссылка на следующую ссылку? Если нет, то вы должны.

Ответ 4

Я нашел это простое решение:

Сначала вам нужно создать класс для замены стандартного вывода:

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

Ответ 5

Вам придется перенаправить System.out в пользовательский наблюдаемый подкласс PrintStream, так что каждая char или строка, добавленная в этот поток, может обновить содержимое textArea (я думаю, это AWT или Swing)

Экземпляр PrintStream может быть создан с помощью ByteArrayOutputStream, который будет собирать вывод перенаправленного System.out