Java 重用通用 FXML

标签 java javafx javafx-2 fxml

我有一些包含很多组件的通用 FXML,但为了简单起见,我们可以说它是一个 textArea。

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.TextArea?>


<TextArea fx:id="test" prefHeight="200.0" prefWidth="200.0" promptText="test data" xmlns="http://javafx.com/javafx/8.0.101" xmlns:fx="http://javafx.com/fxml/1" />

在此 textArea 上,您可以看到它的 id 为“test”。

所以我的问题是您可以在多个一个 Controller 中重用此 FXML 吗?

我最初的想法是通过通用 Controller ,如下所示:

public abstract class GenericController {
    Program program = Program.getInstance();
    @FXML TextArea test;


    @FXML
    abstract void  initialize();
    abstract void setData();




}

并将 FXML 指向 GenericController。 然后在更具体的 Controller 中扩展它。但我只是得到一个 LoadExceptionError,它在 fx:controller="sample.Controllers.GenericController" 处出错。

最佳答案

只是不要在 FXML 文件中指定 Controller ,即完全删除 fx:controller 属性。然后在加载 FXML 时设置 Controller :

FXMLLoader loader = new FXMLLoader(getClass().getResource("path/to/generic.fxml"));
GenericController controller = new SpecificControllerImplementation();
loader.setController(controller);
Parent root = loader.load();

关于Java 重用通用 FXML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42305101/

相关文章:

JavaMail API - 读取大型 outlook 邮箱 (>3000) 的邮件内容

java - 新场景启动后代码如何执行

java - Type ChangeListener 不带参数

javafx-2 - JavaFX 2 自动列宽

java - 双击后退按钮

Java变量类型

java - Android GridView 上的搜索功能

scala - 使用Java库的Scala,利用Java 8中的lambda表达式支持

非 Activity 用户的 Java 超时

javafx - 在 ImageView 中缩放图像 (javafx)