В JavaFX, как я могу связать два списка, чтобы их selectedIndex всегда был одинаковым? - PullRequest
1 голос
/ 22 апреля 2010

У меня есть два (или более) ListView, которые расположены рядом. Мне нужно, чтобы они действовали как единое целое, поэтому выбранный индекс каждого из них всегда одинаков.

Ответы [ 2 ]

1 голос
/ 27 апреля 2010

Это должно работать :), может быть.

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;
    }
}
0 голосов
/ 22 апреля 2010

«связать с обратным», кажется, вариант:

var a;
var b = bind a with inverse;

работает только для простых выражений. что-либо более сложное выдаст предупреждение / ошибку.

За исключением того, что это не потому, что ListIndex для ListView является общедоступным (спасибо за исправление).

Вам нужно будет сделать это так:

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 ().

...