2017-06-29 5 views
0

Ich entwickle gerade eine JavaFX-Desktop-Anwendung, die eine vorhandene browserbasierte Anwendung ersetzen wird.
Diese neue Anwendung hat die Möglichkeit, externe Anwendungen in Schwung zu bringen.
Ich frage mich jetzt, ob es eine Chance gibt, diese externen Anwendungen innerhalb der bestehenden JavaFX-Anwendung zu starten?Ist es möglich, ein externes Programm in JavaFX einzubetten?

Mit anderen Worten, gibt es eine Möglichkeit, externe Anwendungen in JavaFX einzubetten?

+0

Wenn die externen Anwendungen Swing-Anwendungen sind, können Sie ihre wichtigsten Inhalte in einer [ 'SwingNode'] umfassen (http://docs.oracle .com/javase/8/javafx/api/javafx/einbetten/schwingen/SwingNode.html). Dies setzt voraus, dass die Anwendungen so geschrieben sind, dass der Hauptinhalt passend ausgeschlossen wird, dass er in einen beliebigen Container und nicht nur in einen "JFrame" eingefügt werden kann. –

+0

@James_D Die Anwendungen könnten auf diese Weise integriert werden, aber sie sind ziemlich große Stand-Alone-Anwendungen, so dass die Integration auf diese Weise ein wenig zu viel Arbeit und Aufwand erfordert. Ich habe schon einige kleinere Legacy-Stücke mit Swing-Knoten integriert, aber das ist auf lange Sicht nicht machbar. – Brenin

+0

Sie können kein 'JFrame' (oder anderes Fenster) * innerhalb einer JavaFX-Anwendung anzeigen, wenn Sie das fragen. Sie können das Fenster natürlich nur auf dem Desktop anzeigen lassen (vorausgesetzt, das awt-Toolkit ist vorhanden und Sie fädeln die Dinge korrekt ein). –

Antwort

0

Meinst du sowas?

JavaFX:

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.stage.Stage; 

public class Main extends Application { 

    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage stage) { 
     Button fxButton = new Button("javafx button"); 
     fxButton.setOnAction(event -> new SwingTest()); 
     Scene scene = new Scene(fxButton, 600, 400); 
     stage.setScene(scene); 
     stage.show(); 
    } 
} 

Swing:

import javax.swing.JFrame; 
import javax.swing.WindowConstants; 

import java.awt.Button; 

public class SwingTest extends JFrame { 

    SwingTest() { 
     Button swingButton = new Button("swing button"); 
     getContentPane().add(swingButton); 
     setSize(600, 600); 
     setVisible(true); 
    } 


} 
Verwandte Themen