Hice un programa Java utilizando bibliotecas Swing. Ahora me gustaría redirigir las salidas de mi consola a un JFrame o JPanel.cómo visualizar consola java en JFrame/JPanel
Respuesta
Una vez que tenga su JFrame
o JPanel
, agregue un campo de texto a la misma.
JTextArea
es una buena opción, porque tiene varias líneas. Una vez que se añade, puede .append('text');
a ella en lugar de escribir la System.out.print();
JFrame jFrame = new JFrame();
JTextArea jTextArea = new JTextArea();
jTextArea.append("Hello World.");
jFrame.add(jTextArea);
bien, he leído sobre eso. Pensé que había algo más para hacer eso. Debido a que ya hay println, no quiero agregar un nuevo textarea y anexarlos – Gianfra
Es necesario hacer un OutputStream que redirige la salida al área de texto y que implementa todos los métodos necesarios de la interfaz OutputStream, y luego en su programa principal, redirija su salida estándar a esta secuencia. He usado algo como esto para uno de mis programas:
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 + "> ");
return;
}
sb.append((char) b);
}
}
Y se puede demostrar con esto:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintStream;
import javax.swing.*;
@SuppressWarnings("serial")
public class TextAreaOutputStreamTest extends JPanel {
private JTextArea textArea = new JTextArea(15, 30);
private TextAreaOutputStream taOutputStream = new TextAreaOutputStream(
textArea, "Test");
public TextAreaOutputStreamTest() {
setLayout(new BorderLayout());
add(new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
System.setOut(new PrintStream(taOutputStream));
int timerDelay = 1000;
new Timer(timerDelay , new ActionListener() {
int count = 0;
@Override
public void actionPerformed(ActionEvent arg0) {
// though this outputs via System.out.println, it actually displays
// in the JTextArea:
System.out.println("Count is now: " + count + " seconds");
count++;
}
}).start();
}
private static void createAndShowGui() {
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new TextAreaOutputStreamTest());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
- 1. ¿Cómo borrar la consola en Java?
- 2. Crear una consola en Java
- 3. Colores en la consola Java
- 4. ¿Es posible visualizar la estructura en árbol del código Java?
- 5. ¿Herramienta para visualizar el flujo de código en Java?
- 6. Compilación de varias clases (consola) en Java
- 7. java: colorful system.out mensajes en la consola
- 8. programa de consola de Java
- 9. Progreso basado en la consola en Java
- 10. ¿Cómo visualizar/dibujar autómatas en ocaml?
- 11. ¿Cómo visualizar fácilmente una matriz?
- 12. ¿Cómo levantas la consola java en OpenSUSE o Ubuntu?
- 13. Cómo borrar la consola en Java - Eclipse SDK
- 14. Visualizar un gráfico en matlab
- 15. ¿Cómo puedo visualizar dependencias jar (no complemento)?
- 16. Herramienta para leer y visualizar versiones .class de Java
- 17. ¿Visualizar archivos XML grandes en eclipse?
- 18. ¿Visualizar Logcat en la Terminal?
- 19. Visualizar repositorio Git en GitHub
- 20. traducción de chatset de consola java
- 21. ¿Cómo puedo visualizar mosaicos OSM usando Python?
- 22. git submódulo fusión de conflictos: ¿cómo visualizar?
- 23. ¿Cómo visualizar datos 2D escalares con Matplotlib?
- 24. Cómo visualizar bytes con C/C++
- 25. cómo visualizar/depurar un mapa de imagen?
- 26. Cómo visualizar un gen_fsm de Erlang
- 27. Cómo visualizar un día de la fecha
- 28. cómo visualizar valores en escala logarítmica en matplotalib?
- 29. Técnicas para visualizar datos
- 30. Java - applet web similar a una consola
Entonces, ¿cuál es exactamente su problema? –
¿Tal vez añada todo ese contenido a otro componente de Swing (por ejemplo, 'JTextArea')? – Moonbeam