因此,目前我正在处理一个项目,其中我需要在一个方法中启动一个快速javafx窗口。由于我不想让类扩展应用程序,我的解决方案是创建一个扩展应用程序的内部类,并通过创建内部类的实例和调用内部类中的launch在方法中启动javafx窗口,如下所示。
public void createWindow() {
Fx window = new Fx();
window.launchWindow();
}
public static class Fx extends Application {
private void launchWindow() {
launch();
}
public void start(Stage stage) {
//javafx code
}
}
使用application.launch
并不是启动JavaFX运行时的唯一方法,它只是标准的和最常用的选项。另一个选择是使用platform.startup(Runnable)
(JavaFX9+)。该方法将启动JavaFX运行时,并在JavaFX应用程序线程上调用给定的runnable
。
Platform.startup(() -> {
Stage stage = new Stage();
stage.setScene(/* your built scene */);
stage.show();
});
在这个设置中,有一些重要的事情需要记住:
>
每个JVM实例只能启动一次JavaFX运行时;第二次调用startup
将导致IllegalStateException
。如果您的方法可以被多次调用,那么您需要使用platform.runlater(Runnable)
进行第二次和后续调用。
如果您使用的是Java9+,那么另一个(或者至少是免费的)选择是使用模块。将应用程序
类放在一个只导出到javafx.graphics
模块的包中。这将阻止其他模块访问您的应用程序
类-即使它是公共的。
module app {
requires javafx.graphics;
exports com.example to javafx.graphics;
}
注意:这并不能阻止人们使用类路径或使用--add-exports
,但这将是“错误地使用库”,这意味着没有指定行为。
问题内容: 如何隐藏HBox中的项目,并使该项目使用的空间可用于其他项目。 在上面的代码中,当图例窗格隐藏时,我希望图表节点使用所有可用空间。 问题答案: 在调用legendPane.setVisible之前,请调用: 所述Node.managed特性防止一个节点在一个场景影响其他场景节点的布局。
我在JavaFX中有一个这样的表: @FXML私有表视图表EF; 例如,当我按下一个按钮或更改ComboBox中的值时,如何将它从GUI中完全隐藏起来,当我按下另一个按钮或再次更改ComboBox中的值后,如何使它再次可见? 编辑: Edit2:问题“JavaFX - setVisible不会”隐藏“元素”不是一个解决方案,因为对他来说,setInvisible是有效的,因为它使vBox不可见,只
我使用本教程在JavaFX2中创建了自己的TreeView。但是,我想隐藏我的根节点。 现在看起来是什么样子: null null null null 谢谢,木木
我正在开发一个Java应用程序,使用JavaFX作为它的用户界面。 在OSX Mavericks中,当我使用FileChooser类从计算机硬盘加载CSV文件时,该对话框会显示所有文件和文件夹,甚至是隐藏的文件和文件夹,它们会产生大量噪音,很难找到所需的文件。 此屏幕截图说明了我所说的内容: 我认为这可能是一个OS X问题,但我不知道如何修复,至少我不知道如何使用JavaFX FileChoose
问题内容: 我想要一个不会在单击时自动隐藏的MenuItem(更具体地说是CheckMenuItem)。我知道CustomMenuItem具有此功能,但它应该是CheckMenuItem。 问题答案: 在构造函数中使用CustomMenuItem,setHideOnClick和CheckBox。 编辑: 我只是注意到JavaFX 8u40中将其弄乱了。菜单项的文本颜色与背景颜色相同,因此看不到任何
我们想隐藏“有优惠券吗?添加一张…”在WooCommerce结账时,如果已添加优惠券或客户在结账页面上添加优惠券。 目前,我们在下面有此代码,当客户在购物车页面输入优惠券,然后导航到结帐页面时,此代码有效。在这种情况下,“拥有优惠券?添加一张…”消息不可见。如果购物车页面上未添加优惠券,则消息可见。 这很好用!但是,当客户在结账页面上添加优惠券时,它不起作用。 1.)我们收到消息“优惠券已添加”,