0
我目前正在開發一個JavaFX桌面應用程序,它將取代現有的基於瀏覽器的應用程序。
這個新的應用程序可以選擇啓動外部應用程序。
我現在想知道是否有機會在現有的JavaFX應用程序中啓動這些外部應用程序?是否可以在JavaFX中嵌入外部程序?
換句話說,有沒有辦法在JavaFX中嵌入外部應用程序?
我目前正在開發一個JavaFX桌面應用程序,它將取代現有的基於瀏覽器的應用程序。
這個新的應用程序可以選擇啓動外部應用程序。
我現在想知道是否有機會在現有的JavaFX應用程序中啓動這些外部應用程序?是否可以在JavaFX中嵌入外部程序?
換句話說,有沒有辦法在JavaFX中嵌入外部應用程序?
你的意思是這樣的嗎?
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);
}
}
如果外部應用程序是Swing應用程序,您可以在一個['SwingNode']其主要內容(http://docs.oracle的.com/JavaSE的/ 8/JavaFX的/ API/JavaFX的/嵌入/擺動/ SwingNode.html)。這假定應用程序的編寫方式使得主要內容可以被適當地分解,以便它可以被包含在任意容器中,而不僅僅是在「JFrame」中。 –
@James_D應用程序可以以這種方式集成,但它們是相當大的獨立應用程序,因此以這種方式集成它們會花費太多的工作和精力。我已經將一些小的遺留件與擺動節點集成在一起,但從長遠來看這是不可行的。 – Brenin
您不能在JavaFX應用程序內顯示'JFrame'(或其他窗口)*,如果這就是您要求的。當然,您可以在桌面上顯示窗口(提供awt工具包存在,並且您正確地編寫代碼)。 –