Estou criando uma IDE e queria criar um console, tipo o do eclipse. É pra funcionar assim, a IDE vai gerar um arquivo .com, que é um arquivo executavel do DOS, e eu queria executar esse arquivo no console, pro usuário não ter que abrir o prompt do DOS toda vez que quiser executar o arquivo. O console vai ser tipo um simulador do DOS, com entrada e saida de dados.
Ah! E pelo que eu li até hoje, eu acho que o jeito mais fácil de fazer é com JTextArea, então estou usando o mesmo, mas caso for pra usar outra coisa não tem problema.
Me ajudem por favor, faz um tempão que procuro como fazer isso e não consigo! Obrigado a todos.
Console de entrada e saída
3 Respostas
Bom eu sei que com a classe Runtime, você pode executar comandos no DOS, creio que com ela seja possível pegar o retorno do mesmo.
Precisei pegar o resultado de uma execução no console para exibir no JTextArea, na execução de um build e utilizei essa classe da uma olhada se te ajuda
package br.com.sgc.utils;
import java.io.OutputStream;
import java.io.PrintStream;
import javax.swing.text.JTextComponent;
public class TextAreaOutputStream extends OutputStream {
public static final PrintStream CONSOLE_OUT;
private static JTextComponent outWriter;
static {
CONSOLE_OUT = System.out;
System.setOut(new PrintStream(new TextAreaOutputStream()));
}
private TextAreaOutputStream() {
}
/** seta o componente pra mandar output dos System. */
public static void setTextAreaOut(JTextComponent textArea) {
outWriter = textArea;
}
/** Escreve no componente */
public void write(int param) {
outWriter.setText(outWriter.getText() + (char) param);
}
}
Na hora de Chamar
TextAreaOutputStream.setTextAreaOut(nomeJTArea);
Espero ter ajudado

Precisei pegar o resultado de uma execução no console para exibir no JTextArea, na execução de um build e utilizei essa classe da uma olhada se te ajudapackage br.com.sgc.utils;
import java.io.OutputStream;
import java.io.PrintStream;import javax.swing.text.JTextComponent;
public class TextAreaOutputStream extends OutputStream {
public static final PrintStream CONSOLE_OUT; private static JTextComponent outWriter; static { CONSOLE_OUT = System.out; System.setOut(new PrintStream(new TextAreaOutputStream())); } private TextAreaOutputStream() { } /** seta o componente pra mandar output dos System. */ public static void setTextAreaOut(JTextComponent textArea) { outWriter = textArea; } /** Escreve no componente */ public void write(int param) { outWriter.setText(outWriter.getText() + (char) param); }}
Na hora de Chamar
TextAreaOutputStream.setTextAreaOut(nomeJTArea);Espero ter ajudado
Bom, se não me engano, ai você está desviando as saídas do console pra um JTextArea do seu programa. O que eu queria mesmo é executar o programa diretamente no meu JTextArea, com a possibilidade de ENTRADA e SAIDA de dados, ou seja, o usuário também poderá digitar na JTextArea, porém, somente poderá alterar o texto nesses pontos onde é necessária a entrada de dados. Para executar pode-se usar o Runtime, como Naruffy disse, mas não sei como desviar o resultado da execução para meu JTextArea, se alguém souber como fazer isso por favor me ajude! Obrigado a todos.