我有一个TableView
,其中有可编辑单元格:TextFieldTableCell
,ChoiceBoxTableCell
和CheckBoxTableCell
。
它们是这样制成的:
usernameCol.setCellFactory(TextFieldTableCell.forTableColumn());
usernameCol.setCellValueFactory(new PropertyValueFactory<User,String>("username"));
permissionLevelCol.setCellFactory(ChoiceBoxTableCell.forTableColumn(/*returns a String[]*/usersManager.getPermissionNamesList()));
permissionLevelCol.setCellValueFactory(new PropertyValueFactory<User,String>("permissionLevel"));
giveRefundsCol.setCellFactory(CheckBoxTableCell.forTableColumn(giveRefundsCol));
giveRefundsCol.setCellValueFactory(new PropertyValueFactory<PermissionLevel, Boolean>("giveRefunds"));
每当用户在这些单元格中进行某些更改时,如何获得输出。我既需要某种触发器,又需要一种获取新值的方法。例如每当更改时打印新值
编辑:
我的尝试
在User类中,我放置了由构造函数调用的此方法:
public void setup(){
username.addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
System.out.println("changed username to: " + newValue);
}
});
password.addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
System.out.println("changed password to: " + newValue);
}
});
permissionLevel.addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
System.out.println("changed permission level to: " + newValue);
}
});
}
不幸的是,这仍然行不通。
答案 0 :(得分:0)
您可以使用usernameCol.setOnEditCommit(EventHandler)
来监听表单元格发生的更改,然后可以将值传递给另一个函数以验证或保存所需的数据,或者使用{{1 }}并实施StringProperty