javafx2mouseclicked事件未按其应有的方式生成(如在JAVA中)
在下面的代码中,我演示了java和javaFX2之间的区别,因为它涉及到鼠标点击事件的生成,我不知道这是预期的还是可以被视为bug 在JavaFX2.0中,您似乎可以按下鼠标按钮,移动鼠标任意时间,然后当您释放按钮时,将触发鼠标单击事件。与JAVA不同的是,如果单击鼠标按钮后移动鼠标,然后释放按钮,则不会触发MouseClicked事件javafx2mouseclicked事件未按其应有的方式生成(如在JAVA中),java,mouseevent,javafx-2,mouseclick-event,Java,Mouseevent,Javafx 2,Mouseclick Event,在下面的代码中,我演示了java和javaFX2之间的区别,因为它涉及到鼠标点击事件的生成,我不知道这是预期的还是可以被视为bug 在JavaFX2.0中,您似乎可以按下鼠标按钮,移动鼠标任意时间,然后当您释放按钮时,将触发鼠标单击事件。与JAVA不同的是,如果单击鼠标按钮后移动鼠标,然后释放按钮,则不会触发MouseClicked事件 public class FrameClass extends JFrame{ public FrameClass() throws HeadlessExce
public class FrameClass extends JFrame{
public FrameClass() throws HeadlessException {
setPreferredSize(new Dimension(300,300));
final Canvas canv = new Canvas();
canv.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
canv.getGraphics().drawRect(e.getX(), e.getY(), 10, 50);
}
});
getContentPane().add(canv);
pack();
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new FrameClass();
}
}
要证明这一点,请尝试以下代码,其中当单击鼠标时,会在单击点绘制一个矩形。即使按左键,移动鼠标,然后释放按钮,矩形也会被绘制(在释放鼠标按钮的点上)
所以问题本身就是:如何证明这种差异是合理的?谁的行为是对的,谁的行为是错的?在这之后,我如何模仿JavaFX2,0中的鼠标,使其行为与Java中的相同
谢谢你的帮助
附言:进口商品不见了 这是有意的:为同一节点中的每个后续按下和释放操作生成鼠标单击 哪种行为是对的,哪种行为是错的,这是不存在真理的——不同的Tookit使用这两种方法。目前的行为对JavaFX最有用
注意:请注意,双击(或更多)可验证鼠标是否在两次单击之间移动。谢谢回答。老实说,我一点也不喜欢这个功能,因为当我想要一个与Java中相同的鼠标点击事件时,我必须编写自己的鼠标点击的肮脏实现……如果不编写样板代码,就无法验证点击/释放处理程序中按下了哪个按钮?@ajeh,这是一个完全不同的问题,请,分开问
public class FrameClass extends JFrame{
public FrameClass() throws HeadlessException {
setPreferredSize(new Dimension(300,300));
final Canvas canv = new Canvas();
canv.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
canv.getGraphics().drawRect(e.getX(), e.getY(), 10, 50);
}
});
getContentPane().add(canv);
pack();
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new FrameClass();
}
}