NumberFormatException в Spinner - PullRequest
       33

NumberFormatException в Spinner

0 голосов
/ 27 февраля 2020

У меня есть что-то похожее на мой метод «инициализации»:

SpinnerValueFactory<Double> betaValueFactory = new SpinnerValueFactory.DoubleSpinnerValueFactory(-9999999, 9999999, 0);
this.betaSpinner.setValueFactory(betaValueFactory);
SpinnerValueFactory<Integer> temperatureValueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(-9999999, 9999999, 0);
this.temperatureSpinner.setValueFactory(temperatureValueFactory);

Проблема в том, что когда пользователь вводит неправильную вещь, такую ​​как «ааа» в одном из счетчиков, у меня есть исключение, подобное этому:

Exception in thread "JavaFX Application Thread" java.lang.NumberFormatException: For input string: "aaa"
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
    at java.base/java.lang.Integer.parseInt(Integer.java:658)
    at java.base/java.lang.Integer.valueOf(Integer.java:989)
    at javafx.base/javafx.util.converter.IntegerStringConverter.fromString(IntegerStringConverter.java:49)
    at javafx.base/javafx.util.converter.IntegerStringConverter.fromString(IntegerStringConverter.java:35)
    at javafx.controls/javafx.scene.control.Spinner.commitValue(Spinner.java:460)
    at javafx.controls/javafx.scene.control.Spinner.lambda$new$3(Spinner.java:168)
    at javafx.base/com.sun.javafx.binding.ExpressionHelper$Generic.fireValueChangedEvent(ExpressionHelper.java:348)
    at javafx.base/com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:80)
    at javafx.base/javafx.beans.property.ReadOnlyBooleanPropertyBase.fireValueChangedEvent(ReadOnlyBooleanPropertyBase.java:72)
    at javafx.graphics/javafx.scene.Node$FocusedProperty.notifyListeners(Node.java:8159)
    at javafx.graphics/javafx.scene.Node.setFocused(Node.java:8212)
    at javafx.graphics/javafx.scene.Scene$KeyHandler.setWindowFocused(Scene.java:4038)
    at javafx.graphics/javafx.scene.Scene$KeyHandler.lambda$new$0(Scene.java:4060)
    at javafx.base/com.sun.javafx.binding.ExpressionHelper$Generic.fireValueChangedEvent(ExpressionHelper.java:348)
    at javafx.base/com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:80)
    at javafx.base/javafx.beans.property.ReadOnlyBooleanPropertyBase.fireValueChangedEvent(ReadOnlyBooleanPropertyBase.java:72)
    at javafx.base/javafx.beans.property.ReadOnlyBooleanWrapper.fireValueChangedEvent(ReadOnlyBooleanWrapper.java:103)
    at javafx.base/javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:111)
    at javafx.base/javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:145)
    at javafx.graphics/javafx.stage.Window.setFocused(Window.java:674)
    at javafx.graphics/javafx.stage.Window$1.setFocused(Window.java:149)
    at javafx.graphics/com.sun.javafx.stage.WindowHelper.setFocused(WindowHelper.java:112)
    at javafx.graphics/com.sun.javafx.stage.WindowPeerListener.changedFocused(WindowPeerListener.java:64)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassWindowEventHandler.run(GlassWindowEventHandler.java:126)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassWindowEventHandler.run(GlassWindowEventHandler.java:40)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassWindowEventHandler.lambda$handleWindowEvent$4(GlassWindowEventHandler.java:176)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:412)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassWindowEventHandler.handleWindowEvent(GlassWindowEventHandler.java:174)
    at javafx.graphics/com.sun.glass.ui.Window.handleWindowEvent(Window.java:1351)
    at javafx.graphics/com.sun.glass.ui.Window.notifyFocus(Window.java:1330)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    at java.base/java.lang.Thread.run(Thread.java:830)

Я бы хотел решить эту проблему, заставив пользователя ввести правильное значение, отобразив предупреждение с небольшим сообщением, но я не знаю, как это сделать, поэтому Ты мне нужен Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...