私はjavafx編集可能なComboBoxを持っています。
value プロパティは、ComboBox を終了するだけでなく、Enter キーを押したときにのみ更新されます。
フォーカスされていないコントロールがその値プロパティに反映されていない値を表示するのは奇妙であるため、設計機能ではなくバグのように思えます。
問題を示す 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();
}
}
output:
[コンボに何か書いて、もう一方のコントロールをクリックします (またはタブを押します。同じです)]
null
[コンボを元に戻し、Enter キーを押してテキスト フィールドをクリックします]
こんにちは
、最初の null は奇妙です。おそらくバグがあります。私が前に言ったように。ジラで簡単に検索しましたが、この動作は見つかりませんでした。(たぶん気づいてない)
更新
OK、追加しました
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
そして、問題は消えます。