【问题标题】:JavaFx TextField focus lost formattingJavaFx TextField 焦点丢失格式
【发布时间】:2014-11-15 20:45:12
【问题描述】:

我正在使用 Scene Builder 和 jdk8 创建一个 Java Fx 应用程序。我有各种寻找数字输入的文本字段。一旦文本字段失去焦点,我希望能够格式化这些文本字段。

我一直在使用 DecimalFormat df = new DecimalFormat("######0.00");在文本字段的总结果上,但不在输入文本字段上。

非常感谢任何帮助。

【问题讨论】:

  • add changeListener 并在焦点丢失时调用您的格式函数
  • @vinay - 我是事件处理的新手,到目前为止只需要处理按钮操作。我看过焦点侦听器,知道有获得焦点和失去焦点的方法,但不确定如何实现它们。

标签: javafx textfield scenebuilder


【解决方案1】:
final ChangeListener<? super Boolean> focusListener = (o,ov,nv)->{
    if(!nv){
        TextField tf = (TextField)((ReadOnlyBooleanPropertyBase)o).getBean();
        //put your code here
    }
}
tf1.focusedProperty().addListener(focusListener);
tf2.focusedProperty().addListener(focusListener);
tf3.focusedProperty().addListener(focusListener);

【讨论】:

    【解决方案2】:
    TextField tf1=new TextField();
    TextField tf2=new TextField();
    TextField tf3=new TextField();
    
    // add focus listener to all textFields
    
    tf1.focusedProperty().addListener(new TextFieldListener(tf1));
    tf2.focusedProperty().addListener(new TextFieldListener(tf2));
    tf3.focusedProperty().addListener(new TextFieldListener(tf3));
    

    实现 changeListener 的类

    class TextFieldListener implements ChangeListener<Boolean> {
              private final TextField textField ;
              TextFieldListener(TextField textField) {
                this.textField = textField ;
              }
               @Override
              public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
                 if(!newValue)    // check if focus gained or lost
                 {
                     this.textField.setText(getFormattedText(this.textField.getText());
                 }
              }
    
         public String getFormatedText(String str)
         {
              //return formated text
         }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 2020-05-27
      • 1970-01-01
      • 2016-02-02
      • 2015-05-17
      • 1970-01-01
      • 2017-11-07
      相关资源
      最近更新 更多