Chcę uruchomić inną aplikację z kodu Java.Java, uruchom inną aplikację na pierwszym planie
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("cmd.exe");
Proces jest uruchamiany, ale w tle. Jak sprawić, by działał na pierwszym planie?
Chcę uruchomić inną aplikację z kodu Java.Java, uruchom inną aplikację na pierwszym planie
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("cmd.exe");
Proces jest uruchamiany, ale w tle. Jak sprawić, by działał na pierwszym planie?
Należy poinformować cmd.exe, że chcesz go otworzyć w nowym oknie:
Process pr = rt.exec("cmd.exe /c start");
Uruchom polecenie z JDialog i po uruchomieniu użyj opcji BackBack().
final JDialog dlg = new javax.swing.JDialog(null, "test", JDialog.ModalityType.DOCUMENT_MODAL);
dlg.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
JButton button = new JButton("Select Me");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
java.awt.Desktop.getDesktop().open(
new java.io.File("/home/user/Downloads/jfreechart-1.0.13-US.pdf"));
dlg.toBack();
} catch (IOException e1) {
throw new RuntimeException(e1);
}
}
});
Process#waitFor() jest tym, czego szukasz.
Rozważ użycie commons-exec podczas pracy z procesami zewnętrznymi. Moim zdaniem jest to znacznie łatwiejsze w obsłudze niż przy użyciu klasy Java Runtime.