MouseListener:确定mousePressed .getSource()== MouseReleased .getSource()

问题描述 投票:0回答:1

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

[我想处理用户单击button1,继续按住鼠标按钮,然后拖动到button2并在button2上释放鼠标的情况,其中button1button2是JButton我已经添加了MouseListeners。

即:如果用户单击button1,然后释放鼠标button1,执行action1()

和:如果用户单击button1,然后释放鼠标button2,什么也不做。

我曾尝试检查是否为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;
}
java swing mouseevent mouselistener
1个回答
0
投票
@Override public void mouseExited(MouseEvent e) { pressed = false; } @Override public void mouseEntered(MouseEvent e) { pressed = true; }
© www.soinside.com 2019 - 2024. All rights reserved.