5

mifxmlファイルで次のようなものを取得しました。

<TextField fx:id="id" onInputMethodTextChanged="#foo" prefWidth="200.0" promptText="" />

しかし、それを実行すると、TextFieldコントロールからTabキーまたはマウスで移動しても、何も起こりません( "foo"は呼び出されません)。

4

2 に答える 2

5

onInputMethodTextChangedプロパティは、がプラットフォームでサポートされているTextField場合にのみ適用されます。ConditionalFeature.INPUT_METHODこれを確認するには

Platform.isSupported(ConditionalFeature.INPUT_METHOD)

ユーザーがテキストフィールドからフォーカスアウトしているときに何らかの作業を行おうとしている場合は、

textField.focusedProperty().addListener(new ChangeListener<Boolean>() {
    @Override
    public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
        if(!newValue) {
            System.out.println("Focusing out from textfield");
        }
    }
});
于 2012-10-18T14:04:59.773 に答える
0

Platform.isSupported(ConditionalFeature.INPUT_METHOD)== trueでも、同じ問題が発生しました

setOnInputMethodTextChangedで設定したイベントハンドラーが起動しませんでした。

ChangeListener.change()自体では、イベントをトリガーしたソースノードに簡単にアクセスできないため、TextField.textProperty.addListener(ChangeListener listener)の使用について懸念していました。

私は以下を使用して回避しました:

final TextField field = new TextField("field");
field.textProperty.addListener(new ChangeListener() {

 public void changed(ObservableValue observable, Object oldValue, Object newValue) {

   dosomethingwith(field);

}

});

フィールドを「final」として宣言すると、ChangeListener.changed()内の変更イベントのソースノードにアクセスできるようになりました。

于 2015-02-06T11:15:31.187 に答える