2012-02-22 40 views
8

Bất cứ ai có thể cho tôi biết một cách ngắn gọn để xóa các mục đã chọn khỏi số JList của tôi?Xóa mục đã chọn khỏi JList

Tôi đã tìm kiếm trên google và tại đây, nhưng tôi đã tìm thấy rất nhiều cách. Tôi nên sử dụng cách nào?

+1

Lấy mô hình của JList (có thể sẽ là đối tượng [DefaultListModel] (http://docs.oracle.com/javase/7/docs/api/javax/swing/DefaultListModel.html)) và xóa đối tượng đã chọn mục từ mô hình thông qua phương thức 'removeElement (Object obj)' của nó. –

+3

Xem tiêu chuẩn Java [Hướng dẫn xoay] (http://docs.oracle.com/javase/tutorial/uiswing/components/list.html#mutable) về chủ đề này – DNA

+1

@JoopEggen: Tôi không phải là người bỏ phiếu nếu đó là những gì bạn đang hỏi, nhưng tôi không đồng ý với bạn ở chỗ tôi nghĩ rằng có một câu trả lời đơn giản. Bạn nhận được đối tượng đã chọn từ JList (không phải chỉ mục), và nếu không null bạn gọi phương thức remove của một mô hình có một đối tượng: 'removeElement (obj)'. –

Trả lời

23

Như @Andreas_D cho biết, dữ liệu tập trung, trừu tượng hơn ListModel là giải pháp. Đây có thể là DefaultListModel. Bạn nên đặt rõ ràng mô hình trong JList. Vì vậy (nhờ nhận xét bằng @kleopatra):

DefaultListModel model = (DefaultListModel) jlist.getModel(); 
int selectedIndex = jlist.getSelectedIndex(); 
if (selectedIndex != -1) { 
    model.remove(selectedIndex); 
} 

Có một số phương pháp remove... trong DefaultListModel. Nhân tiện, đây là một câu hỏi hay, vì không có giải pháp ngay lập tức trong API (ListModel).

+1

Tôi sẽ không lấy chỉ mục mà đúng hơn là mục đã chọn, và sau đó gọi phương thức removeElement của mô hình lấy một tham số Object. –

+2

đồng ý: ListModel là giao diện tối thiểu của tất cả các giao diện bộ sưu tập (không thể thay đổi và không thể sửa đổi) - nhưng đó không phải là vấn đề OPs: s/anh ta đã đọc chương hướng dẫn (hiển thị cùng mẫu như bạn làm ở đây - trừ đi kiểm tra để được lựa chọn) Hãy coi chừng: mô hình mặc định của một JList là _not_ một DefaultListModel, bạn phải thiết lập rõ ràng nó. – kleopatra

3

Thành phần JList được hỗ trợ bởi mô hình danh sách. Vì vậy, cách duy nhất được đề nghị để xóa một mục khỏi danh sách xem là xóa mục khỏi mô hình (và làm mới chế độ xem).

+0

Nếu anh ta sử dụng một DefaultListModel (và trong tất cả khả năng anh ta là), sau đó không cần phải làm mới xem vì điều này nên được thực hiện tự động. –

+0

Đây là câu trả lời chung chung cho câu hỏi chung. –

Các vấn đề liên quan