我在TableView中有一个列,只允许“男性”或“女性”值。
此列中的单元格是可修改的,当用户输入错误的字符串(如“Test”)时,它会创建一个警告,通知他们错误。
我目前遇到的问题是,在关闭警报框后,它会创建另一个与前一个警报框相同的警报框,此过程将永远循环。
我的代码是:
genderColumn.setCellFactory((TreeTableColumn<Person, String> param) -> new GenericEditableTreeTableCell<Person, String>(new TextFieldEditorBuilder()));
genderColumn.setOnEditCommit((CellEditEvent<Person, String> t)->{
if(t.getNewValue().toLowerCase().equals("male")){
((Person) t.getTreeTableView().getTreeItem(t.getTreeTablePosition().getRow()).getValue()).getGenderProperty().set("Male");;
} else if (t.getNewValue().toLowerCase().equals("female")){
((Person) t.getTreeTableView().getTreeItem(t.getTreeTablePosition().getRow()).getValue()).getGenderProperty().set("Female");;
} else {
Alert alert = new Alert(AlertType.ERROR);
alert.setTitle("Invalid Gender");
alert.setContentText("Please specify the gender as either Male or Female");
alert.showAndWait();
((Person) t.getTreeTableView().getTreeItem(t.getTreeTablePosition().getRow()).getValue()).getGenderProperty().set(t.getOldValue());;
}
});
您能否帮我理解/解决为什么会不断生成警报框?
谢谢。