是否可以使用JavaFX更改应用程序图标,还是必须使用Swing完成?
我想从我的控制器类处理阶段事件(即隐藏).所以我要做的就是通过添加一个监听器
((Stage)myPane.getScene().getWindow()).setOn*whatIwant*(...);
Run Code Online (Sandbox Code Playgroud)
但问题是初始化刚刚开始
Parent root = FXMLLoader.load(getClass().getResource("MyGui.fxml"));
Run Code Online (Sandbox Code Playgroud)
之前
Scene scene = new Scene(root);
stage.setScene(scene);
Run Code Online (Sandbox Code Playgroud)
因此.getScene()返回null.
我自己找到的唯一解决方法是向myPane.sceneProperty()添加一个监听器,当它变为非null时,我得到场景,添加到它的.windowProperty()我的!该死!我最终检索阶段的监听器处理.这一切都以设置所需的听众来举办舞台活动而告终.我认为听众太多了.这是解决我问题的唯一方法吗?
我在选择menuItem时关闭当前场景并打开另一个场景时遇到问题.我的主要阶段编码如下:
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Shop Management");
FXMLLoader myLoader = new FXMLLoader(getClass().getResource("cartHomePage.fxml"));
Pane myPane = (Pane) myLoader.load();
CartHomePageUI controller = (CartHomePageUI) myLoader.getController();
controller.setPrevStage(primaryStage);
Scene myScene = new Scene(myPane);
primaryStage.setScene(myScene);
primaryStage.show();
}
Run Code Online (Sandbox Code Playgroud)
程序执行后,将转到cartHomePage.fxml.从那里,我可以选择在选择菜单项时创建产品或创建类别.这是我的行动事件:
Stage prevStage;
public void setPrevStage(Stage stage){
this.prevStage = stage;
}
public void gotoCreateCategory(ActionEvent event) throws IOException {
Stage stage = new Stage();
stage.setTitle("Shop Management");
FXMLLoader myLoader = new FXMLLoader(getClass().getResource("createCategory.fxml"));
Pane myPane = (Pane) myLoader.load();
Scene scene = new Scene(myPane);
stage.setScene(scene);
prevStage.close();
setPrevStage(stage);
stage.show();
}
//Method …
Run Code Online (Sandbox Code Playgroud) 我正在使用JavaFX 2.我希望我的框架打开最大化,但我没有看到方法.我在互联网上搜索了一下没有成功.对于我看到的阶段setFullScreen()
,setIconified()
但我没有看到任何类似的东西setMaximized()
.
我正在JavaFX 2.0中创建一个应用程序.在我的主窗口中,我正在启动一个带有一些设置的新窗口.调整完设置后,我想按下"保存更改"按钮.
我想要这个按钮来保存更改并关闭窗口.关闭我的意思是杀死它,而不是将它放在后台或设置可见性.我已经读过一个方法Stage.close()
http://docs.oracle.com/javafx/2.0/api/javafx/stage/Stage.html
正如您所看到的,它类似于方法Hide(),它只隐藏窗口,而不是关闭窗口.
问:有人知道任何方法或有一些代码可以帮助我关闭窗口吗?
所有帮助将不胜感激.谢谢!
"SEDA为的缩写阶段式服务器模型,并分解一个复杂的,事件驱动的应用程序为一组的阶段由连接队列 ".
我知道这是一个架构,并且SEDA有很多实现(参见维基百科文章).什么是"舞台"?有人可以提供有关分阶段事件驱动架构的全面高级摘要,以及它与传统(未分级?)事件驱动架构的区别吗?
我一直试图通过使用以下鼠标监听器在屏幕上移动一个未修饰的阶段:
这些事件来自一个矩形.我的想法是移动未装饰的窗口,点击矩形并拖动所有窗口.
@FXML protected void onRectanglePressed(MouseEvent event) { X = primaryStage.getX() - event.getScreenX(); Y = primaryStage.getY() - event.getScreenY(); } @FXML protected void onRectangleReleased(MouseEvent event) { primaryStage.setX(event.getScreenX()); primaryStage.setY(event.getScreenY()); } @FXML protected void onRectangleDragged(MouseEvent event) { primaryStage.setX(event.getScreenX() + X); primaryStage.setY(event.getScreenY() + Y); }
我用这些事件得到的就是当我按下矩形并开始拖动窗口时,它会移动一点点.但是,当我释放按钮时,窗口移动到矩形所在的位置.
提前致谢.
我正在写简单的太阳系模拟器.这是我的第一个libgdx项目.我在主菜单上使用舞台和演员,非常方便,特别是触摸事件处理.但是......看看这些例子,我看到没有人在实际的游戏逻辑中使用演员.如果我应该使用演员作为星球的父母,或者只是写我自己的班级,我会徘徊.行星将不会被触摸,它们将仅在帧之间移动,因此动作MoveBy的第三个参数必须是帧之间的时间.这是缺点.使用Actors的优点是什么?
是否可以在javafx中使用按钮从另一个fxml打开新的阶段(窗口)?谢谢你的回答.
我正在JavaFx中创建一个应用程序,如果有任何子阶段被打开,我想要这样做,然后它应该在父阶段的中心打开.我试图这样做,mystage.centerOnScreen()
但它会将子阶段分配到屏幕的中心,而不是父阶段的中心.如何将子阶段分配到父阶段的中心?
private void show(Stage parentStage) {
mystage.initOwner(parentStage);
mystage.initModality(Modality.WINDOW_MODAL);
mystage.centerOnScreen();
mystage.initStyle(StageStyle.UTILITY);
mystage.show();
}
Run Code Online (Sandbox Code Playgroud)