Implementando uma janela de console com o componente JTextArea
Veja o código de como desenvolver um console utilizano o componente JTextArea.
Implementando uma janela de console com o componente JTextArea
Este exemplo cria uma janela de console usando JTextArea. Esta janela mostra toda a saída de dados para System.out e a System.err. Para isso, duas threads de leitura são criadas para recuperar a saída de dados e adicioná-los no componente JTextArea.
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
public class Console extends JFrame {
PipedInputStream piOut;
PipedInputStream piErr;
PipedOutputStream poOut;
PipedOutputStream poErr;
JTextArea textArea = new JTextArea();
public Console() throws IOException {
// Configura System.out
piOut = new PipedInputStream();
poOut = new PipedOutputStream(piOut);
System.setOut(new PrintStream(poOut, true));
// Configura System.err
piErr = new PipedInputStream();
poErr = new PipedOutputStream(piErr);
System.setErr(new PrintStream(poErr, true));
// Adiciona barra de rolagem na área de texto
textArea.setEditable(false);
textArea.setRows(20);
textArea.setColumns(50);
getContentPane().add(new JScrollPane(textArea), BorderLayout.CENTER);
pack();
setVisible(true);
// Cria as threads de leitura
new ReaderThread(piOut).start();
new ReaderThread(piErr).start();
}
class ReaderThread extends Thread {
PipedInputStream pi;
ReaderThread(PipedInputStream pi) {
this.pi = pi;
}
public void run() {
final byte[] buf = new byte[1024];
try {
while (true) {
final int len = pi.read(buf);
if (len == -1) {
break;
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
textArea.append(new String(buf, 0, len));
// Mantém a última linha sempre visível
textArea.setCaretPosition(textArea.getDocument().getLength());
// Mantém a área do texto para um determinado tamanho de caractere
int idealSize = 1000;
int maxExcess = 500;
int excess = textArea.getDocument().getLength() - idealSize;
if (excess >= maxExcess) {
textArea.replaceRange("", 0, excess);
}
}
});
}
} catch (IOException e) {
}
}
}
}
O console é criado usando o código abaixo:
try {
new Console();
} catch (IOException e) {
}
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo