Javafx 2 MouseClickedイベントは、必要なように生成されません(Javaのように)
-
29-10-2019 - |
質問
次のコードでは、Mouse_Clickedイベントの生成に関する限り、JavaとJavafx2の違いを示します。
Javafx 2.0では、マウスボタンを押し、好きなだけマウスを移動し、ボタンをリリースすると、MouseClickedイベントが発射されます。マウスボタンをクリックした後、マウスを移動してからボタンをリリースするJavaとは対照的に、MouseClickedイベントは発射されません。
これを証明するには、次のコードを試してください。マウスをクリックすると、クリックポイントで長方形が描画されます。左ボタンを押したとしても、マウスを移動してからボタンをリリースしてください。
public class MouseClickTester extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
final Group root = new Group();
Rectangle rect = new Rectangle(0, 0, 300, 300);
rect.setFill(Color.RED);
rect.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent me) {
Rectangle yellowRect = new Rectangle(me.getSceneX(), me.getSceneY(),10,50);
yellowRect.setFill(Color.YELLOW);
root.getChildren().add(yellowRect);
}
});
root.getChildren().add(rect);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}
次のコードは同じことをしますが、単純なJavaでは。しかし、今回は、左ボタンが押されている間にマウスを移動し、それを解放すると、MouseClickedイベントが発射されないため、長方形は描画されません。
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();
}
}
質問そのもの:この違いをどのように正当化できるのでしょうか?誰が正しい行動をしていて、誰が間違っているのですか?そして、余波で、Javafx 2,0でMouseClicklickをエミュレートしてJavaと同じように振る舞うにはどうすればよいですか?
助けてくれてありがとう!
詩輸入がありません!
正しい解決策はありません
所属していません StackOverflow