3
我有一個javafx可編輯組合框。
只有當我按下Enter鍵時,value屬性纔會更新,而不僅僅是退出組合框。
在我看來,這是一個錯誤,而不是一個設計特性,因爲非聚焦的控件顯示的值不會被它的值屬性反映出來會很奇怪。javafx-2,可編輯ComboBox值只在輸入鍵上設置
這裏是一個SSCE,顯示問題:
import javafx.application.Application;
import javafx.beans.*;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class T02 extends Application {
public static void main (String [] args) { launch(args); }
@Override public void start(Stage stage) throws Exception {
System.out.println("javafx.runtime.version: " + System.getProperties().get("javafx.runtime.version"));
VBox vbox = new VBox();
//this combobox is the object of the investigation
final ComboBox comboBox = new ComboBox();
comboBox.setEditable(true);
vbox.getChildren().add(comboBox);
//I need another component just to allow the ComboBox to loose the focus
TextField textField = new TextField();
vbox.getChildren().add(textField);
//And here it is: when comboBox looses focus, i print its state
comboBox.focusedProperty().addListener(new InvalidationListener() {
@Override public void invalidated(Observable observable) {
//return if it has the focus: i am just interested on focus lost
if (comboBox.focusedProperty().get()) {return;}
System.out.println(comboBox.getValue());
}
});
stage.setScene(new Scene(vbox));
stage.show();
}
}
輸出:
[連擊寫的東西,然後點擊其他控制(或按Tab鍵,它是相同的)
空
[點擊重新組合,按回車鍵,然後按向下的文本字段]
你好
第一個空奇怪的是,也許越野車就像我說的之前。我在jira上做了一個快速搜索,並沒有發現這種行爲。 (也許我還沒有注意到這一點)
更新
好吧,我剛剛加入
System.out.println("javafx.runtime.version: " + System.getProperties().get("javafx.runtime.version"));
並得到結果:
javafx.runtime.version: 2.1.something
我已經升級後的版本:
javafx.runtime.version: 2.2.3-b05
問題消失。
您的回答將我引向解決方案,也許您可以爲閱讀問題的人附加一個明確的「檢查您的javafx版本」建議。 – AgostinoX
我在您的問題更新中根據您的建議和版本檢查代碼澄清了答案。 – jewelsea