2012-09-17 11 views
5

javafx 2'de listview sayfasından bir öğe seçtiğimde gerçekleştirilen bir eylemi gerçekleştirmek istiyorum. Netbeans JavaFX fxml uygulaması ve SceneBuilder kullanıyorum. SceneBuilder öğesinde OnMouseClicked yöntemi işe yaramadı. Daha önce bildirmiş olduğum yöntemi bulamadığı için bana bir hata verdi.JavaFX 2'de bir öğe seçerek nasıl bir eylem gerçekleştirilir?

Birisi bana nasıl çalışmayı başardıklarını söyleyebilir mi?

cevap

19

Yalnızca FXML dosyasında yapamazsınız./

@FXML 
private ListView<MyDataModel> myListView; 

init dinleyicisi ekleyin liste görünümü öğesi değişikliklere dinleyecek yöntemini başlatmak:
FXML dosyasının Kontrolörü sınıfında karşılık gelen ListView (FXML içinde fx:id="myListView" varsayılarak) tanımlayın

myListView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<MyDataModel>() { 

    @Override 
    public void changed(ObservableValue<? extends MyDataModel> observable, MyDataModel oldValue, MyDataModel newValue) { 
     // Your action here 
     System.out.println("Selected item: " + newValue); 
    } 
}); 

MyDataModel kendi veri yapısı model sınıfınız veya sadece String olabilir.

@FXML 
private ListView<String> myListView; 

... 
... 

ObservableList<String> data = FXCollections.observableArrayList("chocolate", "blue"); 
myListView.setItems(data); 

myListView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() { 
    @Override 
    public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { 
     // Your action here 
     System.out.println("Selected item: " + newValue); 
    } 
}); 
+0

Dize Örneğin
hızlı cevap için teşekkür ederim. Ama MyDataModel ile ilgili sorunlarım var. String olarak denedim. String a = "test" gibi; ve GözlemlenebilirList data = FXCollections.observableArrayList ( "çikolata", "mavi"); İkisi de işe yaramadı .. bir sınıf sorar .. Bana bir örnek verebilir misiniz lütfen? –