MouseListener:判断是否 mousePressed .getSource() == MouseReleased .getSource()

MouseListener: Determine if mousePressed .getSource() == MouseReleased .getSource()

如何检查用户是否在按下鼠标的同一按钮上释放了鼠标?

我想处理以下情况:用户单击 button1,继续按住鼠标按钮,然后拖动到 button2 并在 button2 上松开鼠标,其中 button1button2 是我添加了 MouseListeners 的 JButton。

That is: if the user clicks button1, and releases the mouse on button1, do action1().

And: if the user clicks button1, and releases the mouse on button2, do nothing.

我试过检查 ePressed.getSource() == eReleased.getSource(),但拖动鼠标后源似乎保持不变。

见下文:

// My thoughts are that if the button is released on the source it was
// pressed, it should print "test", however "test" prints even if I 
// drag the mouse outside of the bounds of the button and release it
public JButton getSqaure() {
  JButton jb = new JButton();

  jb.addMouseListener(new MouseAdapter() {
    boolean pressed = false;

    @Override
    public void mousePressed(MouseEvent e) {
      if (SwingUtilities.isRightMouseButton(e)) {
        pressed = true;
      }
    }

    @Override
    public void mouseReleased(MouseEvent e) {
      if (e.getSource() == jb && pressed) {
        System.out.println("test");
      }

      pressed = false;
    }
  });

  jb.setPreferredSize(new Dimension(50,50));

  return jb;
}

当然 - 我已经回答了我自己的问题:

@Override
public void mouseExited(MouseEvent e) {
  pressed = false;
}

@Override
public void mouseEntered(MouseEvent e) {
  pressed = true;
}