So starten Sie ein .exe-Datei durch klicken auf einen JButton in der GUI?
Habe ich einen JFrame mit 3 Jbuttons. Ich würde gerne die Taste zum starten von anderen .exe-Datei befindet sich im gleichen Ordner. Ist das möglich? Wenn ja, was soll ich schreiben für den actionListener? Auf der anderen Seite, anstatt zu starten eine exe-Datei, ist es möglich, starten Sie eine main-Klasse mit einem JButton? Wenn ja, was soll ich schreiben für den actionListener?
Hinweis: Die .exe-Datei ist ein java-Hauptprogramm.
JButton button1 = new JButton("Program1"); //The JButton name.
frame.add(button1); //Add the button to the JFrame.
button1.addActionListener().... //how to launch the .exe file
Vielen Dank im Voraus
Du musst angemeldet sein, um einen Kommentar abzugeben.
oder verwenden Sie die ProcessBuilder-Klasse.
Sollten Sie in der Lage sein zu finden, z.B. auf der Website, die diese Klassen verwenden.
Edit: zum Beispiel zum starten der Editor-exe in Windows, die Sie tun könnten:
Wenn Sie möchten, führen Sie eine Klasse, dann müssen Sie zum aufrufen der JVM auf die gleiche Weise aufrufen würden Sie es von der Kommandozeile.
Möglicherweise interessieren Sie suchen in ausführen eines externen Prozesses.
Dies würde erfordern, entweder - Laufzeit.getRuntime().exec oder die neuere ProcessBuilder
Ich denke, dass Sie zur Laufzeit verwenden.exec() oder ProcessBuilder ähnlich wie du es nennen würde ein exe-Programm, wenn Sie nicht den Aufruf aus einem GUI. Einige Dinge aufpassen, etwa, dass Sie würde wahrscheinlich wollen, rufen Sie die Runtime.exec() auf einem hintergrund-thread aus der Swing-Haupt-thread der EDT, wie von einer SwingWorker-Objekt. Sonst wird deine GUI einfrieren könnte, während das exe-Programm übernimmt für Sie die Swing-thread. Auch Sie wollen auch alle den Kopf von den Warnungen über den Aufruf von Runtime.exec() angezeigt, die in diesem großen Artikel,
Wenn Laufzeit.exec() nicht, vielleicht einer der besten Artikel zu dem Thema geschrieben-sehr empfehlenswert!!!
Frage: Was meinst du mit dieser Aussage als es ist nicht klar, zu mir?:
Hier ist eine alternative Antwort, ohne erstellen eines neuen Prozesses durch Laufzeit.getRuntime().exec(...) - und können Sie pflegen Sie Ihre System.in/out-Kanäle, auch. Allerdings
wenn Sie neu in der Welt der java-Programmierung und versuchen, die Seile zu lernen, würde ich vorschlagen, folgende camickr die Beratung und nicht in Unordnung mit dem ClassLoader, wie unten beschrieben.
Ich gehe davon aus, dass die Klasse, die Sie ausführen müssen, ist selbsterklärend (nutzt keine inneren Klassen), und nicht bereits in den classpath (jar-Datei) oder man könnte also erstellen Sie einfach eine Instanz und rufen deren main().
Wenn es mehrere class-Dateien eingebunden werden, wiederholen Sie das Verfahren für das laden Sie.
So, in dem ActionListener, dass Ihr JButton addActionListener()-ed ...
Müssen Sie eine neue Klasse MyClassLoader bereits in den classpath. Hier ist ein pseudocode:
Hinweise:
Dies funktioniert gut, wenn die Klasse, die Sie versuchen zu laden ist, die sich auf Ihrem lokalen Rechner und Sie mit java von der Kommandozeile aus. Ich war nie erfolgreich versucht, ein applet download ein classfile von einigen servlet und die Belastung der it - Sicherheit wird nicht zulassen, dass. In diesem Fall ist die Problemumgehung nur, um einem anderen applet in einem anderen Fenster, aber das ist ein anderer thread. Die oben zum laden von Klassen löst das problem mit jar jeden einzelnen classfile, die man brauchen könnte - nur um zu starten der GUI. Viel Glück, - M. S.