【问题标题】:FXML How do I have nested controllers in a single FXML fileFXML 如何在单个 FXML 文件中嵌套控制器
【发布时间】:2017-11-22 11:33:24
【问题描述】:

我已经阅读了一些关于 FXML 包含文件上下文中嵌套 FXML 控制器的文章。但是我的问题是我有一个定义了多个类的 FXML 文件。

简单地说我的问题。如何处理一个 FXML 文件,相当于在下面的示例中运行 makeMe()。

public class ClassA{
   // something
}

public class ClassB{
   public ClassA myAClass;
}

public void makeMe{
   ClassB myBClass;
   myBClass = new ClassB();
   myBClass.myAClass = new CLassA();
}

【问题讨论】:

  • 当您加载 FXML 文件(只有一个 FXML,对吗?)时,我不太清楚您想要结束什么。也许您需要使用docs.oracle.com/javase/9/docs/api/javafx/fxml/doc-files/… 对其进行重组
  • 嗨,James D。用更通用的术语来说明这个问题,我怎样才能使用一个 FXML 文件来做与 ReflectTest.header = new Header(); ReflectTest.header.chartWindow = new Block(); 相同的事情。如果我这样说,问题可能会更清楚。

标签: java javafx fxml fxmlloader


【解决方案1】:

如果可以试试。

<Header fx:id="header" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
    <chartWindow>
        <Block count="4" type="Short" />
    </chartWindow>
    <measurement>
        <Block count="6" type="Short" />
    </measurement>
</Header>

在这种情况下,Header 应该是这样的

public class Header extends Block {

    private Block chartWindow;

    private Block measurement;

    public Block getChartWindow() {
        return chartWindow;
    }

    public void setChartWindow(Block block) {
        this.chartWindow = block;
    }

    public Block getMeasurement() {
        return measurement;
    }

    public void setMeasurement(Block block) {
        this.measurement = block;
    }
}

所以在控制器中你只有一个Header 实例

public class Controller {
    @FXML
    private Header header;
}

【讨论】:

    猜你喜欢
    • 2012-09-14
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 2014-02-25
    • 2015-06-03
    • 2015-05-29
    相关资源
    最近更新 更多