你好,我想刷新一个标签,每个键在一个旋转器。我有以下代码:
spinner.valueProperty().addListener((obs, oldValue, newValue) -> {
if (!"".equals(newValue)) {
System.out.println("spiinerrrr");
}
});好的,当我在旋转器的箭头中单击时,这段代码是很好的,但是当我在旋转器的输入字段中单击并编写一个数字时,
System.out.println("spiinerrrr");没有被执行。
为什么?我没有为组件旋转器找到一个更改值侦听器,而对于textfield,当我在textfield中编写时,下面的代码是好的:
textfield.textProperty().addListener((ObservableValue<? extends String> observable, String oldValue, String newValue) -> {
if (!"".equals(newValue)) {
System.out.println("textfield");
}
});发布于 2017-02-22 08:11:07
可以将侦听器添加到textProperty的Spinner中。
spinner.getEditor().textProperty().addListener((obs, oldValue, newValue) -> {
if (!"".equals(newValue)) {
System.out.println("spiinerrrr");
}
});否则,您必须在更新valueProperty之前按enter键。
如果您希望在焦点丢失时也更新valueProperty (不必按enter键),请向focusedProperty添加一个额外的侦听器
spinner.focusedProperty().addListener((obs, oldValue, newValue) -> {
if (newValue == false) {
this.increment(0);
}
});发布于 2017-02-22 08:20:32
使用getEditor()方法访问旋转器的TextField,然后添加侦听器:
Spinner<String> sp = new Spinner<>(FXCollections.observableArrayList("aaa", "bbb", "ccc"));
sp.setEditable(true);
sp.getEditor().textProperty().addListener((ObservableValue<? extends String> observable, String oldValue, String newValue) -> {
System.out.println(newValue);
});如果需要知道,用户何时输入新值,则:
sp.getEditor().setOnAction(e -> {
System.out.println(sp.getEditor().getText());
}); https://stackoverflow.com/questions/42385584
复制相似问题