是否可以从一个从JSpinner接收ChangeEvent的ChangeListener中知道, 按下了哪个按钮(递增/递减)?
答案 0 :(得分:5)
简短回答:没有办法知道按下了哪个按钮
答案很长:根据您的模型和更改侦听器,如果您对新值和之前的值进行比较,则可以知道用户是前进还是后退。
答案 1 :(得分:1)
您可以检查触发事件的对象。也许在事件发生之前保存该值,并确定它在事件发生期间是上升还是下降。
答案 2 :(得分:0)
将实际值与前一个值进行比较。方法如下:
ChangeEvent ce = ...
((JSpinner)ce.getSource()).getPreviousValue();
答案 3 :(得分:0)
您可以通过存储旧值来检查旧值:
int currentValue = spinner.getValue();
spinner.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent e) {
int value = spinner.getValue();
if(value > currentValue) {
// up was pressed
} else if(value < currentValue) {
// down was pressed
}
currentValue = value;
}
});
答案 4 :(得分:0)
JSpinner是一个复合组件,可以将mouseListeners添加到它包含的组件中。您需要进行一些实验,以确定如何区分按钮和文本字段。一种快速而肮脏的方法是检查它们的坐标。
我不确定是否要迭代JSpinner本身包含的组件,或JSpinner.getEditor()
返回的容器所包含的组件,所以请尝试两者。