2012-09-17 17 views

回答

19

你不能在FXML文件中單獨做到這一點。
定義在控制器類中FXML文件的相應的ListView(假設fx:id="myListView"在FXML):

@FXML 
private ListView<MyDataModel> myListView; 

添加聽者在初始化/啓動方法,該方法將偵聽到列表視圖項目的更改:

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可以是您自己的數據結構模型類或簡單地String
對於字符串例如,

@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

謝謝你的快速答覆。但我有與MyDataModel問題。我嘗試了它作爲一個字符串..像String a =「test」;和ObservableList data = FXCollections.observableArrayList( 「chocolate」,「blue」);兩者都不適合我..它要求上課..你能舉個例子嗎? –

相關問題