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