diff --git a/src/main/java/info/istlab/ServerTester/JTAConsole.java b/src/main/java/info/istlab/ServerTester/JTAConsole.java index 1bf1fc8..ad6ce06 100644 --- a/src/main/java/info/istlab/ServerTester/JTAConsole.java +++ b/src/main/java/info/istlab/ServerTester/JTAConsole.java @@ -20,6 +20,7 @@ import javax.swing.JFrame; import javax.swing.JScrollPane; +import javax.swing.SwingUtilities; import javax.swing.text.BadLocationException; public class JTAConsole extends MyRSJTextArea @@ -28,6 +29,7 @@ // static Point lastActivePoint; static Stack winStack = new Stack(); JFrame frame; + JScrollPane scrollpane; Process process; Thread thread; InputStream instream; @@ -44,9 +46,9 @@ public JTAConsole(String title, int win_height) { frame = new JFrame(title); - frame.getContentPane().add(new JScrollPane(this)); + frame.getContentPane().add(scrollpane = new JScrollPane(this)); frame.setSize(500, win_height); - frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); + frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame.addWindowListener(this); if (winStack.size() > 0) { JTAConsole last = winStack.peek(); @@ -55,7 +57,7 @@ frame.setLocation(lastFrameP.x + 470, lastFrameP.y); } } else { - frame.setLocation(Host.mainhost.underneath(5,10)); + frame.setLocation(Host.mainhost.underneath(5, 10)); } addKeyListener(this); addMouseListener(this); @@ -63,10 +65,12 @@ winStack.push(this); originalContent = new StringBuilder(); - frame.setVisible(true); // 表示を遅らせないと、RSJTextAreaでエラーが出る + SwingUtilities.invokeLater(() -> { + frame.setVisible(true); // 表示を遅らせないと、RSJTextAreaでエラーが出る + }); } - public void Systemoutprintln(String s) { + public synchronized void Systemoutprintln(String s) { append(s + "\n"); originalContent.append(s + "\n"); int len = getDocument().getLength(); @@ -74,6 +78,10 @@ setCaretPosition(len); } + public synchronized void setText(String s) { + super.setText(s); + } + public void startBR(Process proc) { process = proc; try { @@ -147,18 +155,23 @@ @Override public void windowClosing(WindowEvent e) { + setText(""); destroyProcess(); + scrollpane.removeAll(); + frame.getContentPane().removeAll(); winStack.remove(this); - setVisible(false); if (!process.isAlive()) { // Launcher.allProcs.remove(process); } + SwingUtilities.invokeLater(() -> { + // frame.setVisible(false); // 表示を遅らせないと、RSJTextAreaでエラーが出る + frame.dispose(); + }); } @Override public void windowClosed(WindowEvent e) { - } @Override @@ -286,5 +299,4 @@ } - } \ No newline at end of file diff --git a/src/main/java/info/istlab/ServerTester/MyRSJTextArea.java b/src/main/java/info/istlab/ServerTester/MyRSJTextArea.java index d3fda0c..382e5b1 100644 --- a/src/main/java/info/istlab/ServerTester/MyRSJTextArea.java +++ b/src/main/java/info/istlab/ServerTester/MyRSJTextArea.java @@ -57,6 +57,7 @@ } setSyntaxScheme(scheme); + // scheme.getStyle(Token.COMMENT_EOL).background = Color.cyan; // scheme.getStyle(Token.COMMENT_DOCUMENTATION).background = // Color.cyan.brighter(); @@ -77,7 +78,7 @@ // scheme.getStyle(Token.LITERAL_CHAR).foreground = Color.black; setHighlightCurrentLine(false); // カーソル行のハイライトを消す - setCodeFoldingEnabled(true); + // setCodeFoldingEnabled(true); } diff --git a/src/main/java/info/istlab/ServerTester/RemoteHostsWindow.java b/src/main/java/info/istlab/ServerTester/RemoteHostsWindow.java index 21de6e7..ee36785 100644 --- a/src/main/java/info/istlab/ServerTester/RemoteHostsWindow.java +++ b/src/main/java/info/istlab/ServerTester/RemoteHostsWindow.java @@ -79,7 +79,7 @@ @Override public void run() { try { - Thread.sleep(1000); + Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); }