gpt4 book ai didi

java - 访问自定义选项卡类方法

转载 作者:行者123 更新时间:2023-12-02 03:29:54 24 4
gpt4 key购买 nike

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

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

但是,我很难访问各个选项卡本身以调用这些方法。

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

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

// Append comments from each tab
for (Tab t : detailsPane.getTabs()) {
t.getComment(comment);
}
}

但是,无法从 Controller 访问 getComment 方法,并且我收到正常的“无法解析方法”错误。

DetailTab 类具有以下方法:

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

有人可以告诉我我错过了什么吗?在我的 Controller 中运行以下命令可以很好地获取选项卡的标题:

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

最佳答案

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 之一s 不是 DetailTab 的(子)类.

<小时/>

请注意 Iterable<T> 上的循环变量的类型( List<T> extends Iterable<T> ) 只能是可从 T 分配的类型没有 Actor 。

关于java - 访问自定义选项卡类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38247210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com