Java Don';我不知道如何在JFormattedTextField上修复我的PropertyChangeListener 在文章末尾编辑 测试代码和输出

Java Don';我不知道如何在JFormattedTextField上修复我的PropertyChangeListener 在文章末尾编辑 测试代码和输出,java,swing,listener,jformattedtextfield,propertychangelistener,Java,Swing,Listener,Jformattedtextfield,Propertychangelistener,堆栈跟踪: Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Double at test.Test.convert(Test.java:46) 我的想法 因为我有一个方法,它传入一个double(它是convert()),并且似乎evt.getNewValue()返回直接值,在输入时

堆栈跟踪:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Double
        at test.Test.convert(Test.java:46)

我的想法 因为我有一个方法,它传入一个
double
(它是
convert()
),并且似乎
evt.getNewValue()
返回直接值,在输入时它在技术上是一个
长的
,所以它抛出了那个错误

但是每次尝试将
我的
evt.getNewValue()
解析为double都没有成功。也许我对这个项目的一些了解会有所帮助


这个节目的目的是什么 所以我有一个
JPanel
(在
选项卡窗格中
),它有两个
JFormattedTextField
输入。这是一个转换应用程序。我的转换
类方法
传入一个
double
并返回一个
double
。我希望将这些字段链接在一起,或者换句话说,一个字段的输入被更改,另一个字段也随之更改(例如转换的输出)

我曾考虑放弃
属性ChangListener
,转而选择
DocumentListener
,但选择先尝试前者,因为后者有3个
可重写的
方法
我必须处理,其中一个可能会导致一些意外的结果(例如,突出显示和删除该字段将触发两个
事件)


TL;DR: 是否有更好的方法获得动态更新的双输入字段应用程序?在一个字段中输入一个数字,另一个字段的数字自动更新

还是Java的新手


编辑1 我找到了一个临时解决方案:在
JFormattedTextField
中使用
DecimalFormat
作为格式。但是如果它可以在没有小数点的情况下工作,我会喜欢它

编辑2
回答的问题是,没有意识到
evt.getNewValue()
返回的是一个
Number
实例。

您可以肯定的是
evt.getNewValue()
返回的对象是一个
Number
对象。如果您利用该信息并尝试以下方法会怎么样:

temp = ((Number)evt.getNewValue()).doubleValue();

亲爱的,你是我的救世主。谢谢你,只要我被允许,你就会标记为已回答。
一旦一个字段的输入被更改,其他字段也随之更改。
-只有在格式化文本字段上提交更改时,才会触发PropertyChangeListener。因此,DocumentListener将是更好的选择,因此更改将以y的形式发生ou类型。多个事件不是一个issue@camickr我也正要问这个问题。现在它实际上是即时更新的,但只在第一个焦点和我添加数字的情况下更新。否则我必须在该字段上失去焦点,它才能更新另一个字段。我要尝试一个文档侦听器,谢谢。@camickr好的,所以我尝试了使用文档监听器。它只会在失去焦点的情况下更新,所以这更不是我想要的。我会摆弄它看看我是否能解决这个问题。文档监听器可以处理我键入的每个字符。你只需要处理
insertUpdate()
removeUpdate()
事件。
changeEvent()
用于不适用于文本字段的属性更改。@camickr它可以工作,但只有在我从文本字段更改焦点时才能工作。我不知道为什么,我让oracles演示文档侦听器完全按照我希望的程序工作,但我的程序不会这样做。
temp = ((Number)evt.getNewValue()).doubleValue();