2017-03-01 4 views
0

Ich versuche, eine Anwendung zu entwickeln, wo Benutzer in der Lage ist, Schaltflächen aus einer Palette zu ziehen und sie auf eine Arbeitsfläche zu legen, um Arbeitsabläufe zu erstellen. Sobald der Benutzer eine Schaltfläche in den Erstellungsbereich verschoben hat, sollte er in der Lage sein, auf die Schaltfläche doppelt zu klicken, um ein Formular zu öffnen, um Details zu aktualisieren und zu speichern.Schaltfläche Ziehen und Ablegen in JavaFX

Die Hilfe, die ich brauche, ist zum Implementieren von Drag & Drop-Teil. Kann jemand mir helfen, pls

Vielen Dank!

Antwort

1

Hier ist, wie ich per Drag & Drop implementiert Taste und doppelklicken Sie Ereignis

double orgSceneX, orgSceneY; 
double orgTranslateX, orgTranslateY; 
int i = 1; 

@Override 
public void start(Stage primaryStage) { 
    try { 

     BorderPane root = new BorderPane(); 

     Label label = new Label(); 

     Button button = new Button("Hello"); 
     button.setOnMousePressed(buttonMousePressedEventHandler); 
     button.setOnMouseDragged(buttonOnMouseDraggedEventHandler); 
     button.setCursor(Cursor.CROSSHAIR); 

     button.setOnMouseClicked(new EventHandler<MouseEvent>() { 
      @Override 
      public void handle(MouseEvent mouseEvent) { 
       if (mouseEvent.getButton().equals(MouseButton.PRIMARY)) { 
        if (mouseEvent.getClickCount() == 2) { 
         label.setText("Double Click Fire... " + i); 
         i = i + 1; 
        } 
       } 
      } 
     }); 

     HBox box = new HBox(); 
     box.setSpacing(15); 
     box.getChildren().addAll(button); 

     VBox box2 = new VBox(); 
     box2.setSpacing(50); 
     box2.getChildren().addAll(label, box); 

     root.setCenter(box2); 

     Scene scene = new Scene(root, 400, 400); 
     scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

EventHandler<MouseEvent> buttonMousePressedEventHandler = new EventHandler<MouseEvent>() { 

    @Override 
    public void handle(MouseEvent t) { 
     orgSceneX = t.getSceneX(); 
     orgSceneY = t.getSceneY(); 
     orgTranslateX = ((Button) (t.getSource())).getTranslateX(); 
     orgTranslateY = ((Button) (t.getSource())).getTranslateY(); 

     ((Button) (t.getSource())).toFront(); 
    } 
}; 

EventHandler<MouseEvent> buttonOnMouseDraggedEventHandler = new EventHandler<MouseEvent>() { 

    @Override 
    public void handle(MouseEvent t) { 
     double offsetX = t.getSceneX() - orgSceneX; 
     double offsetY = t.getSceneY() - orgSceneY; 
     double newTranslateX = orgTranslateX + offsetX; 
     double newTranslateY = orgTranslateY + offsetY; 

     ((Button) (t.getSource())).setTranslateX(newTranslateX); 
     ((Button) (t.getSource())).setTranslateY(newTranslateY); 
    } 
}; 

public static void main(String[] args) { 
    launch(args); 
} 
+0

Dank Keyur, werde ich versuchen, diese und sehen – HarryB

Verwandte Themen