example java javafx console fxml

example - ¿Redirigir la salida de la consola a JavaFX TextArea?



add controller to fxml (1)

Quiero mostrar el resultado de la consola en un JavaFX TextArea ... desafortunadamente no puedo encontrar ningún ejemplo funcional para JavaFX pero solo para Java Swing, que no parece funcionar en mi caso.

EDITAR:

Traté de seguir este ejemplo: http://unserializableone.blogspot.ch/2009/01/redirecting-systemout-and-systemerr-to.html

y extendió mi código como se muestra a continuación. Sin embargo, ya no hay salida de consola en mi Eclipse IDE, pero tampoco hay salida en mi TextArea. ¿Alguna idea de dónde estoy haciendo mal?

public class Activity extends OutputStream implements Initializable { @FXML public static TextArea taRecentActivity; public Activity() { // TODO Auto-generated constructor stub } @Override public void initialize(URL location, ResourceBundle resources) { OutputStream out = new OutputStream() { @Override public void write(int b) throws IOException { updateTextArea(String.valueOf((char) b)); } @Override public void write(byte[] b, int off, int len) throws IOException { updateTextArea(new String(b, off, len)); } @Override public void write(byte[] b) throws IOException { write(b, 0, b.length); } }; System.setOut(new PrintStream(out, true)); System.setErr(new PrintStream(out, true)); } private void updateTextArea(final String text) { SwingUtilities.invokeLater(new Runnable() { public void run() { taRecentActivity.appendText(text); } }); } @Override public void write(int arg0) throws IOException { // TODO Auto-generated method stub } }


Acabo de hacer esto y funcionó. Aunque fue muy lento con grandes cantidades de texto.

public void appendText(String str) { Platform.runLater(() -> textField.appendText(str)); }

y

@Override public void initialize(URL location, ResourceBundle resources) { OutputStream out = new OutputStream() { @Override public void write(int b) throws IOException { appendText(String.valueOf((char) b)); } }; System.setOut(new PrintStream(out, true)); }