Shape Drag und Drop in JavaFX
- Home
- Tutorials
- Java
- Der Ultimative JavaFX 8 GUI Kurs - Dein Weg zu tollen GUIs
- Shape Drag und Drop in JavaFX
Dieses Video ist nicht verfügbar
Dieses Video steht nur eingeschriebenen Nutzern zur Verfügung.
Jetzt Kurs kaufen
In diesem Artikel lernst du die Verwendung von Drag und Drop in JavaFX. Dabei handelt es sich um ein verbreitetes Verfahren bei Programmen. Man kann ein Element (z.B. Node) "draggen" - ziehen und "droppen" - fallen lassen. Während der Drag-and-drop Gesture können verschiedene Datentypen transferiert werden, z.B. Text, Bilder, URLs, Dateien, Bytes, und Strings. Drag and drop wird auch zwischen verschiedenen JavaFX Applications verwendet werden. Der Code wird in Form von Kommentaren erklärt.
Um mehr über Drag und Drop in JavaFX für z.B. Text zu erfahren und noch mehr der verschiedenen Methoden von Drag und Drop, besuche die Documentation
Beispiel für Drag und Drop in JavaFX
package application;
import java.util.ArrayList;
import javafx.application.Application;
import javafx.scene.Cursor;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.Shape;
import javafx.stage.Stage;
public class Main extends Application {
// x und y Werte unserer Main Scene
double mainSceneX, mainSceneY;
// Die Liste unserer Nodes (hier Vierecke)
private ArrayList nodes;
@Override
public void start(Stage primaryStage) {
Group root = new Group();
Scene scene = new Scene(root, 400, 300);
// Viereck das Bewegt wird
Rectangle rectToMove = new Rectangle(50, 50, 50, 50);
// Viereck das unser Ziel ist
Rectangle rectTarget = new Rectangle(150, 150, 100, 100);
// hinzufügen unserer Vierecke (Nodes)
nodes = new ArrayList<>();
nodes.add(rectToMove);
nodes.add(rectTarget);
// hier setzen wir die Maus, sodass sie
// eine Hand wird, wenn wir drüber fahren
rectToMove.setCursor(Cursor.HAND);
// das wird aufgerufen, wenn unsere Maus auf
// das Viereck drückt
rectToMove.setOnMousePressed((t) -> {
mainSceneX = t.getSceneX();
mainSceneY = t.getSceneY();
Rectangle r = (Rectangle) (t.getSource());
r.toFront();
});
// Wird aufgerufen, wenn unser Viereck sich bewegt
// also sehr häufig
rectToMove.setOnMouseDragged((t) -> {
double offsetX = t.getSceneX() - mainSceneX;
double offsetY = t.getSceneY() - mainSceneY;
Rectangle r = (Rectangle) (t.getSource());
r.setX(r.getX() + offsetX);
r.setY(r.getY() + offsetY);
mainSceneX = t.getSceneX();
mainSceneY = t.getSceneY();
checkBounds(rectTarget);
});
// wird aufgerufen, wenn man die Maus loslässt
rectToMove.setOnMouseReleased((t) -> {
rectToMove.setFill(Color.BLACK);
});
root.getChildren().addAll(rectToMove,rectTarget);
primaryStage.setScene(scene);
primaryStage.show();
}
// Diese Methode sucht nach einer Kollision. Danke an Jewelsea von StackOverflow
// Diese Methode wird jedes mal aufgerufen wenn man unser kleines Viereck
// gedraggt wird.
private void checkBounds(Shape block) {
boolean collisionDetected = false;
for (Shape static_bloc : nodes) {
if (static_bloc != block) {
static_bloc.setFill(Color.YELLOW);
if (block.getBoundsInParent().intersects(static_bloc.getBoundsInParent())) {
collisionDetected = true;
}
}
}
if (collisionDetected) {
block.setFill(Color.GREEN);
} else {
block.setFill(Color.BLUE);
}
}
public static void main(String[] args) {
launch(args);
}
}

Vorherig
Event Handler in JavaFX
Nächste
Audio Player in JavaFX
Der Ultimative JavaFX 8 GUI Kurs - Dein Weg zu tollen GUIs
-
Hier starten
-
Lektion1.1
-
Lektion1.2
-
-
Grundlagen
-
Lektion2.1
-
Lektion2.2
-
Lektion2.3
-
Lektion2.4
-
Lektion2.5
-
Lektion2.6
-
Lektion2.7
-
-
Vollgas zur eigenen Benutzeroberfläche mit UI Controls
-
Lektion3.1
-
Lektion3.2
-
Lektion3.3
-
Lektion3.4
-
Lektion3.5
-
Lektion3.6
-
Lektion3.7
-
Lektion3.8
-
Lektion3.9
-
Lektion3.10
-
Lektion3.11
-
Lektion3.12
-
Lektion3.13
-
Lektion3.14
-
Lektion3.15
-
Lektion3.16
-
Lektion3.17
-
Lektion3.18
-
Lektion3.19
-
Lektion3.20
-
-
Layouts
-
Lektion4.1
-
Lektion4.2
-
Lektion4.3
-
Lektion4.4
-
Lektion4.5
-
Lektion4.6
-
Lektion4.7
-
-
Shapes
-
Lektion5.1
-
Lektion5.2
-
Lektion5.3
-
Lektion5.4
-
Lektion5.5
-
Lektion5.6
-
Lektion5.7
-
-
Charts
-
Lektion6.1
-
Lektion6.2
-
Lektion6.3
-
Lektion6.4
-
Lektion6.5Scatter Chart in JavaFX
-
-
Events
-
Lektion7.1
-
Lektion7.2
-
Lektion7.3
-
Lektion7.4
-
-
Audio und Video
-
Lektion8.1
-
Lektion8.2
-
Lektion8.3
-
-
SceneBuilder
-
Lektion9.1
-
Lektion9.2
-
Lektion9.3
-
Beliebte Kurse
Spring Boot Webentwicklung - RESTful APIs entwickeln!
Lerne Spring Boot und erstelle RESTful APIs Das beliebteste Java...
29,99€
Die Java 11 Masterclass - Werde zum Profi-Entwickler!
Werde zum Entwickler mit der Java 11 Masterclass! Starte in...
29,99€
Spiele entwickeln mit Unity 3D – Erstelle eigene Games in C# - Starter
Willkommen zum kostenlosen Teil des Kurses: "Spiele entwickeln mit Unity...
Kostenlos