2012-01-18 31 views
6

Mặc dù có rất nhiều nghiên cứu tôi không thể tìm thấy câu trả lời hoặc giải quyết cách lấy phần tử văn bản đã chọn bên trong một JList vào một biến. Vì vậy, tôi sẽ đi trước một số trợ giúp. Tôi đã cố gắng chọn chỉ mục của phần tử đã chọn và xóa các phần tử bằng mã này và hoạt động tốt, nhưng khi tôi viết, tôi muốn văn bản được chọn vào một biến sau khi nhấn nút. Cảm ơn!Lấy phần tử văn bản bên trong JList vào một biến?

int index = list.getSelectedIndex(); 
model.removeElementAt(index); 

Phần mã JList tôi:

model = new DefaultListModel(); 
list = new JList(model); 
list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); 
JScrollPane listScroller = new JScrollPane(list); 
listScroller.setPreferredSize(new Dimension(430, 60)); 

Phần mã ActionListener tôi:

// Select customer 
if(event.getSource() == buttonSelectCustomer){ 
int index = list.getSelectedIndex(); // Just for test 
model.removeElementAt(index); // Just for test 
int number = model.getSize(); // Just for test 
//String selectedText = list.getSelectedValue(); // Not working! 
} 

Trả lời

7

Sử dụng phương pháp ListModel#getElementAt(int) với chỉ số hiện đang được chọn. Nếu bạn chắc chắn mô hình của mình chỉ chứa String trường hợp, bạn cũng có thể trực tiếp truyền mẫu này đến một số String cũng như

+0

Cảm ơn các replay. Tôi gõ này: String selectedText = model.getElementAt (index); nhưng tôi nhận được một lỗi bên trong Eclipse nói rằng tôi không thể chuyển đổi từ đối tượng thành String !? –

+1

Bạn nên bỏ nó ... đây không phải là một điểm tốt để lấy một số hướng dẫn và bắt đầu đọc. Đối với vấn đề của bạn, sử dụng: 'String selectedText = (String) model.getElementAt (index);', mà bạn có thể có thể đạt được bằng cách cho phép Eclipse sửa lỗi này cho bạn – Robin

+0

Tôi đồng ý với Robin. Đọc một số hướng dẫn cho người mới bắt đầu về Java và có thể sẽ chuyển sang. – tichy

2

Bạn không thể nhận được văn bản đã chọn vì bạn cố gắng lấy nó sau khi bạn đã xóa phần tử đã chọn. bạn có thể thay đổi mã của bạn:

if(event.getSource() == buttonSelectCustomer) 
{ 
    int index = list.getSelectedIndex(); // Just for test 
    model.removeElementAt(index); // Just for test 
    int number = model.getSize(); // Just for test 
    String selectedText = list.getSelectedValue(); // Not working! 
} 

để mã của tôi:

if(event.getSource() == buttonSelectCustomer) 
{ 
    String selectedText = (String)list.getSelectedValue(); // it works 
    int index = list.getSelectedIndex(); // Just for test 
    model.removeElementAt(index); // Just for test 
    int number = model.getSize(); // Just for test 
} 

sau đó nó hoạt động.

+0

Có Tôi đã phát hiện ra rằng, nhưng vấn đề chính là làm thế nào để có được văn bản vào một biến String và tôi đã nhận lỗi trong Eclipse trước khi tôi chạy chương trình sau đó tôi discovred rằng nó loại bỏ các yếu tố. Tôi quên xóa phần đó của mã. Cảm ơn! –

+0

Tôi nhận được nó, bạn được chào đón. – Alanmars

-1

Thật dễ dàng để truy xuất mục của chỉ mục đã chọn. Đây là một đơn giản mã đoạn:

String[] string = new String[]{"Hello","Hi","Bye"}; 
JList list = new JList(string); 

Bây giờ sử dụng đoạn mã sau để có được những sản phẩm được chọn như là một chuỗi:

String item = list.getSelectedIndex().toString(); 
Các vấn đề liên quan