在JavaFX中,如何绑定两个listview,以便它们的selectedIndex始终相同?

时间:2010-04-22 13:31:33

标签: listview binding javafx selectedindex

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

2 个答案:

答案 0 :(得分:1)

这应该可以工作:),也许。

var lv1 = ListView {
}
var lv2 = ListView {
}

var onSync = false;    

var sel1 = bind lv1.selectedIndex on replace {
    if (not onSync) {
        onSync = true;
        lv2.select(sel1);
        onSync = false;
    }
}
var sel2 = bind lv2.selectedIndex on replace {
    if (not onSync) {
        onSync = true;
        lv1.select(sel2);
        onSync = false;
    }
}

答案 1 :(得分:0)

“with inverse with inverse”似乎是一个选择:

var a;
var b = bind a with inverse;

仅适用于简单表达式。任何更复杂的事情都会产生警告/错误。

除了它不是因为ListView的selectedIndex是公共读取的(为纠正而烦恼)。

你必须这样做:

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);
}

你也可能想在这里和那里添加一些ifs以避免额外的select()调用。