Trong Java Swing, cách tốt nhất cho một JList
và JComboBox
để được đồng bộ hóa về dữ liệu, tức là, để có cùng một danh sách các mục tại bất kỳ thời điểm nhất định nào? Về cơ bản, nếu tôi thêm các mục vào (hoặc xóa các mục từ), mục kia sẽ phản ánh thay đổi tự động.JListboBox đã đồng bộ hóa và JComboBox?
tôi đã cố gắng làm những điều sau đây, nhưng nó dường như không làm việc:
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()));
Tôi không thể tin rằng tôi đã không nghĩ về điều đó ngay cả sau khi xóa bỏ các API. Nó hoạt động hoàn hảo. Cảm ơn sự giúp đỡ của bạn! –
Gọn gàng để đồng bộ hóa các mục, nhưng có cách nào đơn giản để đồng bộ hóa mục đã chọn không? – HpTerm
@HpTerm: Không dễ như vậy. Comboboxmodel quản lý việc lựa chọn chính nó, trong khi danh sách có một ListSelectionModel riêng biệt. Bạn có thể phân lớp DefaultComboboxmodel triển khai ListSelectionModel, hoặc sử dụng các trình nghe để đồng bộ hóa trạng thái lựa chọn (nhưng cẩn thận để tránh các vòng vô hạn). (Và bạn nên đặt chế độ chọn thành 'SINGLE_SELECTION'.) –