【发布时间】:2022-01-05 14:19:35
【问题描述】:
我有以下问题。我的任务是在我的数独字段对象和它在 GUI 中的图形形式之间创建一个双键。到目前为止,我已经设法想出了这样的东西。
TextField textField = new TextField();
JavaBeanIntegerPropertyBuilder builder = JavaBeanIntegerPropertyBuilder.create();
JavaBeanIntegerProperty test = builder.bean(board.getSudokuField(i,j))
.name("FieldValue").build();
StringConverter<Number> converter = new NumberStringConverter();
Bindings.bindBidirectional(textField.textProperty(), test, converter);
该解决方案有效,但如果您输入除数字以外的任何字符,则会引发解析错误。
原因:java.text.ParseException:无法解析的数字:“a”
这是以某种方式改变债券类型的最佳方法吗?或添加有关输入值的条件,但我只是不知道该怎么做。 board.getSudokuField(i,j) 返回 SudokuField 对象。 还有 int getFieldValue() 返回 int 和 void setFieldValue(int value)
【问题讨论】:
-
使用
TextFormatter确保仅在文本字段中输入有效值。通常最好绑定到格式化程序的valueProperty而不是文本。使用 JavaFX 属性而不是使用普通的 Java bean 和适配器来构建SudokuField类也可能会更好。 -
谢谢你的工作
-
如果您有工作版本,您可以self-answer 以便其他人可以看到解决方案的代码。
标签: java user-interface javafx binding