当前位置: 首页 > 面试题库 >

JavaFX类控制器场景参考

弘浩博
2023-03-14
问题内容

有什么方法可以从关联的类控制器获取FXML加载文件的Scene对象。

我正在做这样的事情:

@FXML
private AnchorPane anchor;

Scene scene = anchor.getScene();

但是我想要一个不引用AnchorPane控件的解决方案。


问题答案:

为什么不?Controller是一个抽象类,除非您有意让他知道,否则他不了解UI。

节点(包括AnchorPane)是另一个故事,它们几乎不存在于场景图的外部。因此,最好向Node询问有关其父母或场景的信息。

如果您仍然想单独处理,则有以下方法:

  1. 您可以创建一个自定义控制器并在加载程序之后设置场景。请注意,在initialize()调用时它尚未初始化。
        public class MyController {
        private void Scene scene;
        public void setScene(Scene scene) { this.scene = scene; }

    }

    // loading code
    FXMLLoader fxmlLoader = new FXMLLoader();
    AnchorPane root = (AnchorPane) fxmlLoader.load(getClass().getResource("MyApp.fxml"));
    MyController myController = (MyController) fxmlLoader.getController();
    myController.setScene(scene);
  1. 您可以创建一个自定义fxml控件,该控件将包含控制器,而他可以getScene()自行调用。在此处查看示例:http://codingdict.com/questions/131411


 类似资料:
  • 但我想要一个不引用AnchorPane控件的解决方案。

  • 问题内容: 大家好,我正在构建一个JavaFX项目并正在使用JavaFX Scene Builder2。我想将控制器链接到我的fxml文件,但是我看不到在Scene Builder 2中将控制器添加到我的fxml文件的可能性。我想知道是否有人可以帮助我。谢谢。 问题答案: 我偶然在SceneBuilder 2中找到了控制器属性。关闭左侧的层次结构菜单时,将显示“控制器”菜单,可以在其中声明我的控制

  • 我正在设计一款跳棋游戏,一旦游戏结束,一个新窗口就会打开,你可以开始一个新游戏,也可以退出。我对JavaFX了解不多,我一直在努力让我的代码正常工作,但我没有成功。。。 我有一个困难,我的电路板没有显示为fxml文件,但它是用Java代码创建的,并放在我的边框窗格的中心。边框窗格的顶部是fxml文件。然后,游戏结束后的另一个窗口也是另一个fxml文件: 这个fxml文件的Controller类如下

  • 我是新手,正在尝试学习JavaFX和FXML。我的大部分应用程序逻辑都在FXMLController类中,基类几乎是空的,除了NetBeans IDE生成的基本代码,如下所示 我有一个ID为input1的元素,类型为TextField。如何通过ID访问此(或任何其他)控件?(请记住,我是控制器类而不是主类)。 我在下面找到了这个问题,这正是我要找的,但情况不同,因为它们在定义< code>scen

  • 我想制作一个可以在场景之间切换的基本GUI。我知道以前有人问过这个问题,相信我,我已经试着寻找解决方案好几个小时了,但都没有结果,所以我求助于此。 以下是相关代码: 这里是主端: 当我运行它时,它给出了这个错误: 所以我知道这是由处理按钮动作的方法引起的。我可以成功地使用操作制作其他按钮,只要它们没有参数。 似乎每当我添加这个参数来访问动作事件时,这个方法就不能被识别。我认为我在设置主应用程序或控

  • 我是的新手,我有一个和多个场景,我可以使用在它们之间切换,所有工作都很好,直到我尝试在单击菜单项时做一些事情而不是显示场景。 我试图通过使用方法类中调用,在那里我有菜单项action methods,我调用在单击菜单项时将文本写入方法中的文本字段,但在加载该场景的控制器后,什么都没有发生。这是我的代码: 类 家庭控制器类 我知道我可能忽略了一些东西,但我不知道它是什么,帮助将不胜感激。