2017-06-29 122 views
0

我目前正在開發一個JavaFX桌面應用程序,它將取代現有的基於瀏覽器的應用程序。
這個新的應用程序可以選擇啓動外部應用程序。
我現在想知道是否有機會在現有的JavaFX應用程序中啓動這些外部應用程序?是否可以在JavaFX中嵌入外部程序?

換句話說,有沒有辦法在JavaFX中嵌入外部應用程序?

+0

如果外部應用程序是Swing應用程序,您可以在一個['SwingNode']其主要內容(http://docs.oracle的.com/JavaSE的/ 8/JavaFX的/ API/JavaFX的/嵌入/擺動/ SwingNode.html)。這假定應用程序的編寫方式使得主要內容可以被適當地分解,以便它可以被包含在任意容器中,而不僅僅是在「JFrame」中。 –

+0

@James_D應用程序可以以這種方式集成,但它們是相當大的獨立應用程序,因此以這種方式集成它們會花費太多的工作和精力。我已經將一些小的遺留件與擺動節點集成在一起,但從長遠來看這是不可行的。 – Brenin

+0

您不能在JavaFX應用程序內顯示'JFrame'(或其他窗口)*,如果這就是您要求的。當然,您可以在桌面上顯示窗口(提供awt工具包存在,並且您正確地編寫代碼)。 –

回答

0

你的意思是這樣的嗎?

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

搖擺:

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


} 
相關問題