Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java Console JPanel

Hello Is it possible to draw in a JPanel what the java console is returning ? have you got a tutorial to follow ? thanks sw

like image 785
Swan Avatar asked Nov 26 '25 07:11

Swan


2 Answers

I can't remember where I found this, but I have outputted the output stream to a JTextArea held in a JPanel using a class I call TextAreaOutputStream:

import java.io.IOException;
import java.io.OutputStream;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;

public class TextAreaOutputStream extends OutputStream {

    private final JTextArea textArea;
    private final StringBuilder sb = new StringBuilder();
    private String title;

    public TextAreaOutputStream(final JTextArea textArea, String title) {
        this.textArea = textArea;
        this.title = title;
        sb.append(title + "> ");
    }

    @Override
    public void flush() {
    }

    @Override
    public void close() {
    }

    @Override
    public void write(int b) throws IOException {

        if (b == '\r')
            return;

        if (b == '\n') {
            final String text = sb.toString() + "\n";
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    textArea.append(text);
                }
            });
            sb.setLength(0);
            sb.append(title).append("> ");
        }

        sb.append((char) b);
    }
}

I then re-direct the standard output Stream to this object as Alex mentions in his answer above.

like image 67
Hovercraft Full Of Eels Avatar answered Nov 27 '25 20:11

Hovercraft Full Of Eels


First read from the console. To do this use System.setOut(). Use ByteOutputStream, write there and read from their. You will get what your program prints to it system out. Now use either TextArea or JScrollPane to present the text.

like image 29
AlexR Avatar answered Nov 27 '25 20:11

AlexR



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!