2016-08-01 6 views
0

У меня есть программа, которая при запросе открывает внешний редактор (в настоящее время он жестко закодирован для возвышенного). Затем пользователь напечатает все, что печатает в редакторе, сохранит временный файл и закроет редактор. Когда пользователь закрывает редактор, я хочу, чтобы содержимое временного файла отображалось в программе. Моя главная задача - создать условие, которое может определить, когда редактор закрыт. Может ли WindowListener использоваться в отношении запускающей внешней программы? Вот мой код до сих пор: (Примечание:. Я использую Время воспроизведения из-за проблем совместимости с настольными и моей текущей версии Gnome Это будет работать только на Linux.)Условие для закрытия внешней программы

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(); 
     } 

Спасибо и дайте мне знать, если вам нужна дополнительная информация.

ответ

3

Runtime.exec() возвращает a Process экземпляр, который имеет метод waitFor(). Итак, вы можете сделать

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

Работает как очарование. Спасибо! Принят ответ как можно скорее –

Смежные вопросы