Javafx 2 MouseClickedイベントは、必要なように生成されません(Javaのように)

StackOverflow https://stackoverflow.com/questions/8911196

質問

次のコードでは、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と同じように振る舞うにはどうすればよいですか?

助けてくれてありがとう!

詩輸入がありません!

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top