W Java Swing, jaki jest najlepszy sposób synchronizacji danych pod względem JList
i JComboBox
, tj. Posiadania tej samej listy elementów w dowolnym momencie? Zasadniczo, jeśli dodaję elementy do (lub usuwam z nich), drugi powinien automatycznie odzwierciedlać zmianę.Zsynchronizowane JList i JComboBox?
Próbowałem robić następujące, ale nie wydaje się działać:
JList list = new JList();
JComboBox comboBox = new JComboBox();
DefaultListModel listModel = new DefaultListModel();
// add items to listModel...
list.setModel(listModel);
comboBox.setModel(new DefaultComboBoxModel(listModel.toArray()));
Nie mogę uwierzyć, że o tym nie pomyślałem, nawet po przejrzeniu interfejsów API. Działało idealnie. Bardzo dziękuję za Twoją pomoc! –
Czy chcesz synchronizować elementy, ale czy istnieje prosty sposób na synchronizację wybranego elementu? – HpTerm
@HpTerm: Nie takie proste. Comboboxmodel zarządza samym wyborem, podczas gdy lista ma osobny ListSelectionModel. Możesz podklasować DefaultComboboxmodel implementując ListSelectionModel lub użyć detektorów do synchronizacji stanu selekcji (ale uważaj, aby uniknąć nieskończonych pętli). (I powinieneś ustawić tryb wyboru na "SINGLE_SELECTION".) –