Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8286552

TextFormatter: UpdateValue/UpdateText is called, when no ValueConverter is set

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Fixed
    • Icon: P4 P4
    • jfx19
    • jfx19
    • javafx
    • None
    • generic
    • generic

      A common reason for using the TextFormatter is the need for a filter.
      Therefore, the following constructor is typically used:
      public TextFormatter(@NamedArg("filter") UnaryOperator<Change> filter) { ... }

      With that, no valueConverter is set in the TextFormatter.

      When a TextField will commit his value, TextFormatter.updateValue(...) is called.
      Since valueConverter is null, an NPE is thrown and catched inside it and TextFormatter.updateText() is called (which will call TextInputControl.updateText(...)), which won't do anything either since valueConverter is still not set (=null).

      A minor improvement here is to just skip TextFormatter.updateValue(...) and therefore TextFormatter.updateText(), since this methods won't do anything without a valueConverter.
      With that change, no exception is thrown and catched, and therefore also exception breakpoints are not called.
      This will also slightly increase the performance, as throwing exceptions is a (minor) bottleneck.

            mhanl Marius Hanl
            mhanl Marius Hanl
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: