ProcessFrame.java
Dosyayı İndir
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class ProcessFrame extends JFrame {
private JTextArea textArea = new JTextArea();
private Process process;
private OutputStream output;
private InputStream input;
public ProcessFrame() {
BorderLayout layout = new BorderLayout();
setLayout(layout);
setBounds(100, 100, 400, 300);
createProcess();
addTextArea();
startReceiving();
}
private void createProcess() {
try {
Runtime runtime = Runtime.getRuntime();
String command = "java -cp C:\\Godoro\\Research\\ProcessApplication\\build\\classes Test";
process = runtime.exec(command);
input = new BufferedInputStream(process.getInputStream());
output = new BufferedOutputStream(process.getOutputStream());
} catch (Exception exception) {
exception.printStackTrace();
}
}
private void startReceiving() {
Runnable runnable = new Runnable() {
public void run() {
while (true) {
try {
Thread.sleep(2);
if(input!=null){
int read = input.read();
if (read != -1) {
char character = (char) read;
System.out.print(character);
char[] characters = new char[]{character};
String string = new String(characters);
textArea.append(string);
int caretPosition=textArea.getText().length();
textArea.setCaretPosition(caretPosition);
}
}
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}
private void addTextArea() {
add(textArea);
KeyListener keyListener = new KeyAdapter() {
@Override
public void keyTyped(KeyEvent event) {
try {
char character = event.getKeyChar();
if (character == '\r' || character == '\n') {
output.write('\r');
output.write('\n');
output.flush();
} else {
output.write(character);
}
} catch (Exception exception) {
exception.printStackTrace();
}
}
};
textArea.addKeyListener(keyListener);
}
public static void main(String[] args) {
ProcessFrame frame = new ProcessFrame();
frame.setVisible(true);
}
}
Dosyayı İndir