我是Java FX和场景构建者的新手。
我有一个表格视图,填充了来自我的数据库的数据我已经开始工作了,这里是代码:
public class GridPaneController implements Initializable {
// Table
@FXML
TableView<Box> table;
@FXML
TableColumn<Box, Integer> boxId;
@FXML
TableColumn<Box, String> name;
@FXML
TableColumn<Box, Integer> groesse;
@FXML
TableColumn<Box, String> einstreu;
@FXML
TableColumn<Box, Boolean> fenster;
@FXML
TableColumn<Box, String> standort;
@FXML
TableColumn<Box, Integer> tagessatz;
ObservableList<Box> data = FXCollections.observableArrayList();
@Override
public void initialize(URL location, ResourceBundle resources) {
boxId.setCellValueFactory(new PropertyValueFactory<Box, Integer>("boxId"));
name.setCellValueFactory(new PropertyValueFactory<Box, String>("name"));
groesse.setCellValueFactory(new PropertyValueFactory<Box, Integer>("groesse"));
einstreu.setCellValueFactory(new PropertyValueFactory<Box, String>("einstreu"));
fenster.setCellValueFactory(new PropertyValueFactory<Box, Boolean>("fenster"));
standort.setCellValueFactory(new PropertyValueFactory<Box, String>("standort"));
tagessatz.setCellValueFactory(new PropertyValueFactory<Box, Integer>("tagessatz"));
List<Box> boxen = serv.zeigeAlleBoxen();
for( Box b : boxen ) {
data.add(b);
}
table.setItems(data);
}
}
我现在想做什么:
我的场景中有一个“详细信息”部分,该部分应显示此表中当前所选表条目的详细信息。我不知道的是如何将当前选中的表条目的值放入我的代码中。
更清楚一点: 在我的详细信息部分,我有两个标签:
@FXML
String label_name;
@FXML
String label_tagessatz;
当我点击特定的表条目时,label_name
和label_tagessatz
应更新为单击的表条目的值。我假设我应该定义一个在表视图的onclick事件上调用的方法,但是如何获取所选表条目的值?
我认为甚至更好的方法来解决这个问题:我必须将标签的textproperty绑定到选定的表元素。现在我仍然需要知道如何获得这个。
答案 0 :(得分:1)
table.getSelectionModel().selectedItemProperty().addListener(
(ObservableValue<? extends Box> ov, Box b, Box b1) -> {
label_name.textProperty().bind(b1.nameProperty());
});
您需要在Box类中使用nameProperty()方法。