Java 如何检查值是否是手动设置的,而不是使用setValue(JSlider、JSpinner)设置的?

Java 如何检查值是否是手动设置的,而不是使用setValue(JSlider、JSpinner)设置的?,java,swing,jslider,jspinner,setvalue,Java,Swing,Jslider,Jspinner,Setvalue,如何检查JSlider或JSpinner的值是否是通过图形界面设置的,而不是通过方法setValue(int n)?内部调用了“setValue”。当用户移动滑块的旋钮时,您可以尝试捕获事件,方法是通过实现捕获该事件的。另外,请记住,移动旋钮会触发许多更改事件,因此如果您对滑块的最终值感兴趣,请在其计算结果为false时使用getValueIsAdjusting 如果问题出在使用ChangeListener时,请尝试扩展JSlider组件,并添加一个新方法,该方法接收新值并由谁发出(例如,使用

如何检查JSlider或JSpinner的值是否是通过图形界面设置的,而不是通过方法
setValue(int n)

内部调用了“setValue”。当用户移动滑块的旋钮时,您可以尝试捕获事件,方法是通过实现捕获该事件的。另外,请记住,移动旋钮会触发许多更改事件,因此如果您对滑块的最终值感兴趣,请在其计算结果为
false
时使用
getValueIsAdjusting


如果问题出在使用
ChangeListener
时,请尝试扩展JSlider组件,并添加一个新方法,该方法接收新值并由谁发出(例如,使用int代码或枚举),在将自定义逻辑设置为实setValue方法后派生值的设置


在您的情况下,如果某个组件调用了
setValue
,如果我没有弄错的话,您需要防止调用它。

无论何时以编程方式调用setValue(在调用它之前),都要将布尔值设置为true,完成事件处理后,将其重置为false。

图形界面内部调用
设置值
,因此我无法捕获事件,问题在于事件内部,因为有两个对象相互依赖,它们彼此更改值,从而进入无限循环,这就是为什么我需要检测变化的模式。