0

我有一个类,其中包含两个 JSpinner 对象,x 和 y。我有一个添加到两者的更改侦听器。有人可以告诉我如何实现我的更改侦听器,以便侦听器可以分辨出两个对象之间的区别。例如伪代码:

if(source equals x)
    do this
else if(source equals y)
    do that

多谢你们,

4

2 回答 2

3

您可以简单地使用匿名类来实现每个微调器的侦听器

例如,如果你想实现对 x 的更改监听器,你可以这样做:

x.addChangeListener(new ChangeListener()
{
   public void stateChanged(ChangeEvent e)
   {
   }
});

和 y 一样

于 2013-03-19T22:55:40.060 回答
2

在可能的情况下,每个控件使用单个侦听器更为谨慎(正如 Ali 指出的那样,+1)。它隔离了事件/动作,使其通常更容易阅读和理解......

如果您看不到自己在使用它,那么每个EventObject人都有一个getSource方法,该方法是对引发事件的控件的引用...

public void stateChanged(ChangeEvent e)
{
    if (e.getSource() == xControl) {
        // xControl updated
    } else if (e.getSource() == yControl) {
        // yControl updated
    }
}
于 2013-03-19T23:16:42.110 回答