2016-08-01 41 views
0

Ich habe ein Programm, das, wenn aufgefordert, öffnet einen externen Editor (derzeit hart zu erhaben). Der Benutzer gibt dann ein, was im Editor eingegeben wird, speichert die temporäre Datei und schließt den Editor. Wenn der Benutzer den Editor schließt, möchte ich, dass der Inhalt der temporären Datei im Programm angezeigt wird. Mein Hauptanliegen ist das Erstellen einer Bedingung, die erkennen kann, wann der Editor geschlossen wurde. Kann WindowListener in Bezug auf ein gestartetes externes Programm verwendet werden? Hier ist mein Code so weit: (Anmerkung:. Ich verwende die Laufzeit aufgrund eines Kompatibilitätsproblem mit dem Desktop und meine aktuelle Version von Gnome Dies wird nur unter Linux ausgeführt werden.)Bedingung für, wenn außerhalb Programm schließt

private CachedTextInfo cti; 
private File temp = File.createTempFile("tempfile",".tmp"); 

try{ 
    theText.setText(cti.initialText); 
    String currentText = theText.getText(); 
    BufferedWriter bw = new BufferedWriter(new FileWriter(temp)); 
    bw.write(currentText); 
    bw.close(); 
    Runtime.getRuntime().exec("subl "+ temp.getAbsolutePath()); 
    //When editor closes, display tmp contents 
     }catch(IOException e) { 
      e.printStackTrace(); 
     } 

Danke und lassen Sie mich wissen wenn Sie zusätzliche Informationen benötigen.

Antwort

3

Runtime.exec() gibt eine Process Instanz zurück, die eine waitFor() Methode hat. So können Sie tun

Process p = Runtime.getRuntime().exec("subl "+ temp.getAbsolutePath()); 
try { 
    p.waitFor(); 
    // display tmp contents... 
} catch (InterruptedException exc) { 
    // thread was interrupted waiting for process to complete... 
} 
+0

Arbeitete wie ein Charme. Vielen Dank! Wird die Antwort so schnell wie möglich annehmen –