2017-06-29 123 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); 
    } 


} 
相关问题