MouseListener:判断是否 mousePressed .getSource() == MouseReleased .getSource()
MouseListener: Determine if mousePressed .getSource() == MouseReleased .getSource()
如何检查用户是否在按下鼠标的同一按钮上释放了鼠标?
我想处理以下情况:用户单击 button1
,继续按住鼠标按钮,然后拖动到 button2
并在 button2
上松开鼠标,其中 button1
和 button2
是我添加了 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;
}
如何检查用户是否在按下鼠标的同一按钮上释放了鼠标?
我想处理以下情况:用户单击 button1
,继续按住鼠标按钮,然后拖动到 button2
并在 button2
上松开鼠标,其中 button1
和 button2
是我添加了 MouseListeners 的 JButton。
That is: if the user clicks
button1
, and releases the mouse onbutton1
, doaction1()
.And: if the user clicks
button1
, and releases the mouse onbutton2
, 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;
}