Existe alguma maneira de se “emular” o console Java em um aplicativo Swing ? Eu estou tentando criar uma especie de prompt do Ms-dos ou algo parecido com o console Java que existe no Eclipse.
Emulando o console do Java
9 Respostas
Taca um JTextArea (ou TextArea, em AWT ou SWT) e redireciona a System.out e System.in. Da uma olhada no javadoc da java.lang.System 
Eu li, revi … mas mesmo assim não entendi como devo proceder. Poderia exemplificar ?
Vamos por partes (é igual a construir um túnel, você para economizar tempo começa a furar pelos dois lados da montanha, e com sorte você vai fazer as duas metades do túnel se encontrarem):
- Para a saída
System.setOut(PrintStream out) é o que “redireciona” o System.out.
Ela recebe um PrintStream, portanto você teria de criar uma classe derivada de PrintStream. Como essa classe tem muitos métodos para sobreescrever, vamos fazer uma coisa mais simples, que é criar uma classe derivada de OutputStream (pois PrintStream tem um construtor que recebe um OutputStream).
OutputStream é mais fácil de implementar, pois apenas um método é estritamente necessário de ser implementado: public void write (int b), que escreve 1 byte.
Assim, você deve criar uma classe derivada de OutputStream, cujo construtor recebe um TextArea ou JTextArea, e cujo método write deve acrescentar 1 byte à string exibida pela JTextArea. (Obviamente, para a string não estourar, é melhor ver o tamanho, e limitar o número de linhas…)
Puxa, furei demais o túnel, nem precisei de furar pelo outro lado. Já chegamos…
Valeu, thingol 
Nao sei se vc consegue se dar bem so implementando o write(int b) da OutputStream, mas jah eh um bom comeco. Implementar o close() & friends talvez seja interessante tambem 
Valeu, thingol![]()
Nao sei se vc consegue se dar bem so implementando o write(int b) da OutputStream, mas jah eh um bom comeco. Implementar o close() & friends talvez seja interessante tambem :D
Não entendi a piadinha!
Nao teve piadinha :?
Tudo bem, agora eu so estou precisando fazer a conversao de um inteiro para o seu equivalente como caracter. Mais especificamente, tentar fazer a codificação dentro do metodo write(int arg0) que sobreescrevi na minha classe extendida OutputStream.
Pois quando eu mando, por exemplo, a letra “a”; é apresentado o número 61 (Igual a representação segundo a tabela ASCII).
Por outro lado, já tentei usar o método estático Character.forDigit(int arg0, int radix), so que não tive sucesso.
O que eu posso fazer para resolver esse pequeno problema ?
Pois então, o que você está recebendo no método write (int b) é um byte de cada vez, na verdade.
Experimente fazer o seguinte - considerar o byte como um caracter, usando (char) (b & 0xFF). Use String.valueOf (char) para obter uma string que representa o tal caracter.
Para que a sua classe seja mais rápida, você pode sobreescrever também aqueles métodos write(byte[]) etc - a conversão de byte[] para String é mais rápida que converter 1 byte de cada vez e ir adicionando um caracter de cada vez na String.
…e cuidado com os encodings 