通过休息电话打开javafx应用程序

时间:2016-12-17 01:54:53

标签: rest javafx spring-boot hal

有没有人知道如何通过休息请求打开JavaFx应用程序?

方案: 我有一个Spring Boot Service,可以在每台机器上运行,通过我的SPA(单页应用程序)和我的通讯端口建立一个桥接器。那是因为SPA无法与操作系统通信。

此通讯是通过http请求进行的。

现在我有一个问题,我需要创建一个通过http请求启动的javafx应用程序,当我调用第一次时,它工作正常,但如果我关闭javafx应用程序点击'x'并尝试打开我再次收到以下错误:

@RestController
@RequestMapping("v1/appfx")
public class AppfxController{
    @RequestMapping("")
    private void openJavaFxApp(){  
        try{       
            MyJavaFxApp.launch(MyJavaFxApp.class);
        }
        catch (Exception ex)
        {
            ex.printStackTrace();           
        }       
    }       
}

有一种方法,当我关闭javafx窗口时,它会杀死JavaFx线程,所以当我再次调用它时,它会启动一个新线程? 或者我是否需要保留Thread并找到一种方法在同一个Thread中重新打开我的javafx应用程序?

这是我的@Controller

public class MyJavaFxApp extends Application {
    private final static Logger log =       LoggerFactory.getLogger(MyJavaFxApp.class);
    private BigDecimal left;
    private String selectedOperator;
    private boolean numberInputting;

    @FXML
    private TextField display;

    public MyJavaFxApp() {
        this.left = BigDecimal.ZERO;
        this.selectedOperator = "";
        this.numberInputting = false;
    }


    @Override
    public void start(Stage stage) throws Exception {
        stage.setTitle("MyJavaFxApp");
        stage.setOnCloseRequest(x -> {
            log.info("closed");
            Platform.exit();
        });
        stage.setResizable(false);
        stage.setScene(new Scene(FXMLLoader.load(getClass().getClassLoader().getResource("Test.fxml"))));
        stage.show();
        stage.toFront();
    }

}

这是我的JavaFx:

{{1}}

感谢您的帮助。

0 个答案:

没有答案