在JavaFX中,如何绑定两个listview';那么他们选择的索引总是一样的?

在JavaFX中,如何绑定两个listview';那么他们选择的索引总是一样的?,listview,binding,javafx,selectedindex,Listview,Binding,Javafx,Selectedindex,我有两个(或更多)并列的ListView。我需要它们作为一个整体,以便每个索引的所选索引始终相同。“使用反向绑定”似乎是一个选项: var a; var b = bind a with inverse; 仅适用于简单表达式。任何更复杂的操作都会产生警告/错误 但这不是因为ListView的selectedIndex是公共读取的(thaks表示更正) 您必须这样做: var lv1 = ListView { } var lv2 = ListView { } var sel1 = bind lv1

我有两个(或更多)并列的ListView。我需要它们作为一个整体,以便每个索引的所选索引始终相同。

“使用反向绑定”似乎是一个选项:

var a;
var b = bind a with inverse;
仅适用于简单表达式。任何更复杂的操作都会产生警告/错误

但这不是因为ListView的selectedIndex是公共读取的(thaks表示更正)

您必须这样做:

var lv1 = ListView {
}
var lv2 = ListView {
}
var sel1 = bind lv1.selectedIndex on replace {
    lv2.select(sel1);
}
var sel2 = bind lv2.selectedIndex on replace {
    lv1.select(sel1);
}
您可能还需要在此处或此处添加一些if,以避免额外的select()调用。

使用反向绑定似乎是一个选项:

var a;
var b = bind a with inverse;
仅适用于简单表达式。任何更复杂的操作都会产生警告/错误

但这不是因为ListView的selectedIndex是公共读取的(thaks表示更正)

您必须这样做:

var lv1 = ListView {
}
var lv2 = ListView {
}
var sel1 = bind lv1.selectedIndex on replace {
    lv2.select(sel1);
}
var sel2 = bind lv2.selectedIndex on replace {
    lv1.select(sel1);
}
您可能还需要在此处或此处添加一些if,以避免额外的select()调用。

这应该可以:),也许可以

这应该有用:),也许吧


如何设置selectedIndex?根据API,它们似乎没有写访问权限。所以我不知道如何实现它。很抱歉谢谢Honza,这不管用。selectedIndex仅为RO属性。你的下一个建议是无限循环。(更好的说法是,导致StackOverflowerError)如何设置selectedIndex?根据API,它们似乎没有写访问权限。所以我不知道如何实现它。很抱歉谢谢Honza,这不管用。selectedIndex仅为RO属性。你的下一个建议是无限循环。(说得更好,因为StackOverflower错误)有趣,我会试试看,谢谢你的回答!然而,另一件事是,我注意到在JavaFX1.2中,似乎不可能操纵滚动条,因此我可能会选择第100个索引,但我无法看到它。(据我所知)谢谢!这确实有效,非常感谢!唯一的问题是滚动条!有意思,我试试看,谢谢你的回答!然而,另一件事是,我注意到在JavaFX1.2中,似乎不可能操纵滚动条,因此我可能会选择第100个索引,但我无法看到它。(据我所知)谢谢!这确实有效,非常感谢!唯一的问题是滚动条!