diff --git a/src/main/java/istlab/KisoJikken/ConsoleTest.java b/src/main/java/istlab/KisoJikken/ConsoleTest.java new file mode 100644 index 0000000..d193201 --- /dev/null +++ b/src/main/java/istlab/KisoJikken/ConsoleTest.java @@ -0,0 +1,75 @@ +package istlab.KisoJikken; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; + +public class ConsoleTest extends JFrame implements Runnable { + JTextArea jta; + Thread thread; + int cnt; + + public ConsoleTest() { + super("ConsoleTest"); + jta = new JTextArea(); + // jta.setLineWrap(true); + getContentPane().add(new JScrollPane(jta)); + setSize(500, 200); + setVisible(true); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + thread = new Thread(this); + thread.start(); + } + + public static void main(String[] arg) { + new ConsoleTest(); + } + + @Override + public void run() { + Process process; + + // ProcessBuilder processBuilder = new ProcessBuilder("ls", "-R"); + ProcessBuilder processBuilder = new ProcessBuilder("ping", "localhost"); + // ProcessBuilder processBuilder = new ProcessBuilder("pwd"); + // processBuilder.directory(new File(App.userhome + App.nwpsrc)); + // processBuilder.inheritIO(); + try { + process = processBuilder.start(); + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + String line; + while ((line = reader.readLine()) != null) { + jta.append(line + "\n"); + int len = jta.getDocument().getLength(); + jta.setCaretPosition(len); + } + // process.waitFor(); + } catch (IOException e1) { + e1.printStackTrace(); + } + + // while (thread != null) { + // jta.append("count: " + cnt + "\n"); + // int r = new Random().nextInt(20, 100); + // for (int i = 0; i < r; i++) { + // jta.append("*"); + // } + // jta.append("\n"); + // cnt++; + + // int len = jta.getDocument().getLength(); + // jta.setCaretPosition(len); + + // try { + // Thread.sleep(1000); + // } catch (InterruptedException e) { + // e.printStackTrace(); + // } + // } + } +} diff --git a/src/main/java/istlab/KisoJikken/JExecutor.java b/src/main/java/istlab/KisoJikken/JExecutor.java index 0f56dfa..a7a2637 100644 --- a/src/main/java/istlab/KisoJikken/JExecutor.java +++ b/src/main/java/istlab/KisoJikken/JExecutor.java @@ -27,28 +27,32 @@ @Override public void run() { - System.out.println("== 実行開始 =="); ProcessBuilder processBuilder = new ProcessBuilder("java", pkgname + "." + javafname); - System.out.println("> cd ~" + App.nwpsrc); - System.out.println("> java " + pkgname + "." + javafname); + processBuilder.redirectErrorStream(true); + JTAConsole con = new JTAConsole(); + con.Systemoutprintln("== 実行開始 =="); + con.Systemoutprintln("> cd ~" + App.nwpsrc); + con.Systemoutprintln("> java " + pkgname + "." + javafname); // ProcessBuilder processBuilder = new ProcessBuilder("pwd"); processBuilder.directory(new File(App.userhome + App.nwpsrc)); - processBuilder.inheritIO(); + // processBuilder.inheritIO(); try { process = processBuilder.start(); + con.startBR(process); + // process.waitFor(); + // BufferedReader reader = new BufferedReader(new // InputStreamReader(process.getInputStream())); // String line; // while ((line = reader.readLine()) != null) { // jta.append(line); // } - process.waitFor(); - } catch (IOException | InterruptedException e1) { + } catch (IOException e1) { e1.printStackTrace(); } - System.out.println("== 実行終了 =="); + con.Systemoutprintln("== 実行終了 =="); thread = null; } } diff --git a/src/main/java/istlab/KisoJikken/JTAConsole.java b/src/main/java/istlab/KisoJikken/JTAConsole.java new file mode 100644 index 0000000..f43caac --- /dev/null +++ b/src/main/java/istlab/KisoJikken/JTAConsole.java @@ -0,0 +1,131 @@ +package istlab.KisoJikken; + +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; + +public class JTAConsole extends JTextArea implements Runnable, WindowListener { + JFrame frame; + Process process; + Thread thread; + InputStream instream; + BufferedReader reader; + // ProcessBuilder pb; + + // public JTAConsole(ProcessBuilder prob) { + public JTAConsole() { + // pb = prob; + + frame = new JFrame(); + frame.getContentPane().add(new JScrollPane(this)); + frame.setSize(500, 200); + frame.setVisible(true); + frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); + frame.addWindowListener(this); + } + + public void Systemoutprintln(String s) { + append(s + "\n"); + int len = getDocument().getLength(); + setCaretPosition(len); + } + + public void startBR(Process proc) { + process = proc; + reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); + String line; + try { + while ((line = reader.readLine()) != null) { + Systemoutprintln(line); + } + process.waitFor(); + + } catch (IOException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + Systemoutprintln("=== end ==="); + + // thread = new Thread(this); + // thread.start(); + } + + @Override + public void run() { + String line; + try { + while ((line = reader.readLine()) != null) { + Systemoutprintln(line); + } + } catch (IOException e) { + e.printStackTrace(); + } + + Systemoutprintln("=== end ==="); + } + + public static void main(String[] arg) { + ProcessBuilder processBuilder = new ProcessBuilder("ping", "localhost"); + Process process = null; + try { + process = processBuilder.start(); + } catch (IOException e) { + e.printStackTrace(); + } + JTAConsole con = new JTAConsole(); + con.startBR(process); + + } + + @Override + public void windowOpened(WindowEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void windowClosing(WindowEvent e) { + process.destroy(); + + } + + @Override + public void windowClosed(WindowEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void windowIconified(WindowEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void windowDeiconified(WindowEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void windowActivated(WindowEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void windowDeactivated(WindowEvent e) { + // TODO Auto-generated method stub + + } +}