我遇到了(对我而言)JavaFX微调器的一个奇怪问题而且无法将任何类型的监听器附加到它上面.
我已经习惯了Swing编程,我可以将ChangeListener附加到JSpinner并以这种方式接收事件,但JavaFX似乎没有这样的东西.
有问题的代码......
IntegerSpinnerValueFactory spinnerValueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(0, Integer.MAX_VALUE);
hullPointsSpinner = new Spinner<Integer>(spinnerValueFactory);
hullPointsSpinner.setEditable(true);
((TextField)hullPointsSpinner.getEditor()).setOnAction(new EventHandler<ActionEvent>() {
public void handle( ActionEvent event )
{
System.out.println("Howdy, folks! Value is " + hullPointsSpinner.getValue() + "!!");
}
});
Run Code Online (Sandbox Code Playgroud)
箭头按钮将增加和减少字段中的值,但不会影响模型中的值.仅选择字段的内容并按Enter将实际更新模型中的数据并打印出值.(我知道,紧迫的输入内容在文档中.)
我也意识到我正在使用getEditor将EventHandler放到Spinner的TextField上,但我还没有看到另一种方法.
有没有办法将侦听器挂钩到微调器的按钮?
(哎呀,有没有办法让这些按钮附加一个听众?)
我是否从微调器/编辑器接收到错误的类型事件?我可以在spinnerValueFactory上放一些监听器吗?
我在这里有一些明显的解决方案吗?
如果有必要的话,我会用JSpinner替换它,但是我觉得这个API会有一个微调器组件以及如此笨拙的使用方式.
提前致谢.