按下JSpinner的哪个按钮?

时间:2011-03-03 18:04:30

标签: java swing

是否可以从一个从JSpinner接收ChangeEvent的ChangeListener中知道, 按下了哪个按钮(递增/递减)?

5 个答案:

答案 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()返回的容器所包含的组件,所以请尝试两者。