访问自定义选项卡类方法

时间:2016-07-07 13:48:12

标签: java javafx

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

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

但是,我很难自己访问各个标签,以便调用这些方法。

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

public StringBuilder getComment(StringBuilder sb) {
    comment = sb;
    comment.append("Testing getComment()");
    return comment;
}

但是,无法从控制器访问getComment方法,我得到正常的“无法解决方法”错误。

DetailTab类具有以下方法:

t.getText();

有人可能会告诉我我错过了什么吗?在我的控制器中运行以下命令可以正常工作以获取选项卡的标题:

for (DetailTab t : detailsPane.getTabs()

所以我似乎正在访问正确的DetailTab对象;我似乎无法了解其中的方法。

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

Error:(205, 47) java: incompatible types: javafx.scene.control.Tab cannot be converted to DetailTab

编译会抛出一个不兼容的类型错误:

import other_module

other_module.counter += 1

1 个答案:

答案 0 :(得分:2)

TabPane.getTabs返回ObservableList<Tab>getComment中没有Tab方法;只有子类DetailTab包含该方法。因此,您需要转换TabList

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

for (DetailTab t : (List<DetailTab>) (List) detailsPane.getTabs()) {
    t.getComment(comment);
}

如果其中一个ClassCastException不是Tab的(子)类,则两个版本都会生成DetailTab

请注意,Iterable<T>List<T> extends Iterable<T>)上的循环变量类型只能是T无需转换的类型。