2012-11-07 43 views
10

Tôi sửa đổi một ListView với kết quả từ tìm kiếm cơ sở dữ liệu để sử dụng lựa chọn đó để thực hiện một yêu cầu DB khác sau này.Lấy phần tử đã chọn từ ListView

Tôi muốn nhận giá trị trường là ListView. Tôi có thể sử dụng phương pháp nào cho điều đó?

Tôi chỉ nghĩ rằng tôi cũng có thể thêm sự kiện vào onclick và giữ nó trên thuộc tính cho bộ điều khiển. Điều đó có chấp nhận được không?

+0

Không có kiểm soát tên GridView trong JavaFX. –

+0

Tôi rất tiếc. Tôi có nghĩa là ListView. Xin hãy tha thứ cho tôi. – Dynelight

+0

Tôi đã xem tài liệu và tìm thấy điều này: "Để theo dõi lựa chọn và lấy nét, cần phải làm quen với các lớp SelectionModel và FocusModel. ListView có tối đa một phiên bản của mỗi lớp này, có sẵn từ selectionModel và Trong khi có thể sử dụng API này để thiết lập một mô hình lựa chọn mới, trong hầu hết các trường hợp, điều này là không cần thiết - các mô hình lựa chọn và lấy nét mặc định sẽ hoạt động trong hầu hết các trường hợp. " Tôi đã xem FocusModel và có một getFocusedItem(). Đó là những gì tôi cần? – Dynelight

Trả lời

28

nói với xem danh sách như thế này:

ListView<String> listView =new ListView<String>(); 

Bắt yếu tố được lựa chọn từ ListView:

listView.getSelectionModel().getSelectedItem(); 

Tracking (Nghe) những thay đổi trong danh sách xem lựa chọn:

listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() { 
    @Override 
    public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { 
     System.out.println("ListView selection changed from oldValue = " 
       + oldValue + " to newValue = " + newValue); 
    } 
}); 
+1

Làm việc như một sự quyến rũ! – Dynelight

+1

Có một số setSelectedIndex cho Listview ???? – Adil

+1

@Adil yes có: listView.getSelectionModel(). Select (index); –

0

Bạn có thể tạo một trình xử lý sự kiện tùy chỉnh, trước tiên hãy tạo một lớp để xử lý các sự kiện chuột.

import javafx.event.EventHandler; 
import javafx.scene.input.MouseEvent; 

class ListViewHandler implements EventHandler<MouseEvent> { 
    @Override 
    public void handle(MouseEvent event) { 
     //this method will be overrided in next step 
    } 
} 

Sau khi thực hiện lớp, đi đến nơi bạn muốn sự kiện này xảy ra

list.setOnMouseClicked(new ListViewHandler(){ 
     @Override 
     public void handle(javafx.scene.input.MouseEvent event) { 
      System.out.print(list.getSelectionModel().getSelectedIndex()); 
     } 
}); 
Các vấn đề liên quan