Java 访问自定义选项卡类方法

Java 访问自定义选项卡类方法,java,javafx,Java,Javafx,我的项目包括一个选项卡窗格(detailsPane),其中填充了动态生成的选项卡对象。我有一个自定义类(DetailTab),它扩展Tab以提供这些选项卡 在我的DetailTab类中,我包含了几个需要从控制器访问的方法 然而,为了调用这些方法,我很难访问各个选项卡本身 到目前为止,我已经在我的控制器中尝试过: private void buildComment() { StringBuilder comment = new StringBuilder(); // Append

我的项目包括一个选项卡窗格(detailsPane),其中填充了动态生成的选项卡对象。我有一个自定义类(DetailTab),它扩展Tab以提供这些选项卡

在我的DetailTab类中,我包含了几个需要从控制器访问的方法

然而,为了调用这些方法,我很难访问各个选项卡本身

到目前为止,我已经在我的控制器中尝试过:

private void buildComment() {
    StringBuilder comment = new StringBuilder();

    // Append comments from each tab
    for (Tab t : detailsPane.getTabs()) {
        t.getComment(comment);
    }
}
但是,无法从控制器访问getComment方法,我得到了正常的“无法解析方法”错误

DetailTab类具有以下方法:

public StringBuilder getComment(StringBuilder sb) {
    comment = sb;
    comment.append("Testing getComment()");
    return comment;
}
有人能告诉我我错过了什么吗?在我的控制器中运行以下命令可以很好地获得选项卡的标题:

t.getText();
看来我正在访问正确的DetailTab对象;我似乎无法理解其中的方法

编辑: 我还尝试了一个修改的for循环,将t声明为DetailTab:

for (DetailTab t : detailsPane.getTabs()
编译会引发不兼容的类型错误:

Error:(205, 47) java: incompatible types: javafx.scene.control.Tab cannot be converted to DetailTab
返回可观察列表。
选项卡中没有
getComment
方法;只有子类
DetailTab
包含该方法。因此,您需要转换
选项卡
列表

for (Tab t : detailsPane.getTabs()) {
    ((DetailTab)t).getComment(comment);
}

for(DetailTab t:(List)(List)detailsPane.getTabs()){
t、 getComment(comment);
}
如果
选项卡
s中的一个不是
详细选项卡
的(子)类,则两个版本都将导致
类异常


请注意,
Iterable
列表扩展Iterable
)上的循环变量类型只能是从
T
分配的类型,而不需要强制转换。

返回
可观察列表
选项卡中没有
getComment
方法;只有子类
DetailTab
包含该方法。因此,您需要转换
选项卡
列表

for (Tab t : detailsPane.getTabs()) {
    ((DetailTab)t).getComment(comment);
}

for(DetailTab t:(List)(List)detailsPane.getTabs()){
t、 getComment(comment);
}
如果
选项卡
s中的一个不是
详细选项卡
的(子)类,则两个版本都将导致
类异常


请注意,
Iterable
列表扩展Iterable
)上的循环变量类型只能是从
T
分配的类型,而无需强制转换