correct way to move a node by dragging in javafx 2?

前端 未结 8 821
感动是毒
感动是毒 2020-12-01 05:50

I\'m converting a Swing/Graphics2D app with a lot of custom painting to a JavaFX2 app. Although I absolutely love the new API, I seem to have a performance problem when pain

8条回答
  •  情书的邮戳
    2020-12-01 06:18

    Drag Sphere

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        super.initialize(location, resources);
        labelTableName.setText("Table Categories");
    
        final PhongMaterial blueMaterial = new PhongMaterial();
        blueMaterial.setDiffuseColor(Color.BLUE);
        blueMaterial.setSpecularColor(Color.LIGHTBLUE);
    
        final Sphere sphere = new Sphere(50);
        sphere.setMaterial(blueMaterial);
    
        final Measure dragMeasure = new Measure();
        final Measure position = new Measure();
        sphere.setOnMousePressed(mouseEvent -> {
            dragMeasure.x = mouseEvent.getSceneX() - position.x;
            dragMeasure.y = mouseEvent.getSceneY() - position.y;
            sphere.setCursor(Cursor.MOVE);
        });
        sphere.setOnMouseDragged(mouseEvent -> {
            position.x = mouseEvent.getSceneX() - dragMeasure.x;
            position.y = mouseEvent.getSceneY() - dragMeasure.y;
            sphere.setTranslateX(position.x);
            sphere.setTranslateY(position.y);
        });
        sphere.setOnMouseReleased(mouseEvent -> sphere.setCursor(Cursor.HAND));
        sphere.setOnMouseEntered(mouseEvent -> sphere.setCursor(Cursor.HAND));
    
        bottomHeader.getChildren().addAll( sphere);
    
    }
    
    class Measure {
        double x, y;
    
        public Measure() {
            x = 0; y = 0;
        }
    }
    

提交回复
热议问题