当前位置: 首页 > 知识库问答 >
问题:

JavaFX场景生成器在不同的包/控制器上处理OnAction

东门修文
2023-03-14

我开始接触JavaFX,并使用SceneBuilder开发GUI。我在java项目中有以下结构:

src/ # Main class and other classes..
src/[package]/IndexClass
src/[Another package]/ProductClass
src/base.fxml # I am using this as a template

在base.fxml中,我有一个菜单栏,其中包含一个菜单项,比如一个按钮,名为btnnew。在SceneBuilder中,我为该按钮声明了一个onActioneventhandler,并试图将其连接到ProductClass中的一个方法。但是,ProductClass与base.fxml在不同的包中,当我单击base.fxml上的菜单项onaction时,它显示为空。

如果你需要更多的澄清,让我知道,我会花一些时间来图表我的问题。

共有1个答案

胡厉刚
2023-03-14

您需要将FXML文件连接到控制器。

在FXML页的根节点中,键入以下内容:

fx:controller="package.subpackage.ControllerName"

其中字符串是控制器的相对包路径。请注意,如果控制器位于不同于FXML文件的包中,您总是声明源包中的路径,这并不重要。您还可以通过右键单击FXML文件并选择“Make Controller”让Netbeans为您完成此操作。

@FXML private Button btnNew;
@FXML
void btnNew_OnAction(ActionEvent event) {
    //body
}

也就是说,如果您真的想在同一屏幕上为各种GUI元素设置多个控制器,这是完全可能的。但是,每个控制器都需要一个不同的FXML文件。看看这个答案,它很好地解决了这个问题:创建多个控制器。

 类似资料:
  • 我希望此图表显示在场景生成器上。怎么可能。。??

  • 我对屏幕生成器有一些问题 对于某些fxml,它会在加载后发生creash。我尝试了很多次运行它,但它阻塞了,我必须终止这个进程。 fxml正常,内容在我的应用程序中正确显示。下面是导致场景生成器崩溃的FXML示例。

  • 我现在在Scene Builder中打开了项目,并在anchor窗格中添加了一个controller类,它为我自动完成了该窗格,因为它识别出我有一个controller类,并且看起来正确。 但是,当我返回到我的.fxml文件时,它将我的控制器标签用红色表示为错误,并表示还表示 我该怎么做呢?我完全按照教程... 项目文件结构如下: ProjectX>src>ProjectX(包)>controll

  • 问题内容: 有什么方法可以从关联的类控制器获取FXML加载文件的Scene对象。 我正在做这样的事情: 但是我想要一个不引用AnchorPane控件的解决方案。 问题答案: 为什么不?Controller是一个抽象类,除非您有意让他知道,否则他不了解UI。 节点(包括AnchorPane)是另一个故事,它们几乎不存在于场景图的外部。因此,最好向Node询问有关其父母或场景的信息。 如果您仍然想单独

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

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