javafx - 微调器中的 NumberFormatException
问题描述
我的“初始化”方法中有一些看起来像这样的东西:
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);
问题是,当用户在其中一个微调器中键入错误的内容时,例如“aaa”,我会遇到这样的异常:
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)
我想通过显示一条带有小消息的警报来强制用户输入正确的值来解决这个问题,但我不知道该怎么做,这就是我需要你的原因。谢谢你的帮助。
解决方案
推荐阅读
- python - 将特定公式应用于熊猫数据框
- html - 如何在高度为 100Vh 的页面上添加 100vh 的标题图像?
- windows - PowerShell中的管道:不将参数绑定到参数
因为它是空的 - c++ - 给定一个非空整数数组 nums,每个元素出现两次,除了一个。使用散列找到那个单一的
- php - 未捕获的错误:调用未定义的方法 mysqli_stmt::fetchAll()
- css - NextJS 的自定义 CSS 支持
- reactjs - 反应路由器 CSSTransition
- python-3.x - Python while 循环仅检查第一个 if 语句 (discord.py)
- javascript - 基于另一列的值着色标记 - plotly.js
- java - 从 Netbeans 8.2 中删除缓存无助于添加外部 .jar 库