Ich benutze FXML neben Scene Builder, um eine sehr einfache Schnittstelle zu entwickeln. Im Folgenden repräsentiert das erste Bild die Layout-Hierarchie. Das zweite Bild zeigt einen Textbereich an, wenn die Taste gedrückt wird.JavaFX Scene Builder - Drag-and-Drop zwischen Elternknoten
Die Aktionsereignismethode instanziiert einen neuen Textbereich und weist ihn dem ersten Fensterbereich zu (von links nach rechts). Mein Ziel ist es, jeden Textbereich in einen der anderen Flow-Bereiche zu ziehen.
Mein erster Versuch war assign Verwendung einen Event-Handler verwenden MOUSE_PRESSED zu erkennen: textArea.addEventHandler(MouseEvent.DRAG_DETECTED, e-> handle(e));
Als ich bekam den Griff Methode einrichten, die Dinge bekam verwirrend. Zum Beispiel, sollte ich die anderen verschiedenen MouseEvents wie MOUSE_EXITED_TARGET, MOUSE_ENTERED_TARGET? Und wie ist der MOUSE_RELEASED-Griff zusammengesetzt?
Ich fing an, Dragboard und Zwischenablage zu sehen, und fand auch nicht viel Glück dort. Die Zwischenablage schien nur in der Lage zu sein, Zeichenkettenwerte zu verarbeiten, oder auf eine Art von Art und Weise, Bilder. Ich bin mir sicher, dass es eine einfache Antwort auf meine missliche Lage gibt, da es deutlich zeigt, dass ich mich auf unbekanntes Terrain bewege.
Ich habe mehrere "Lehrbuch" -Ressourcen durchgelesen, aber alle behandeln die Bewegung von Objekten, die zur Laufzeit erstellt werden, und die meisten entsprechen scheinbar generischen oder einfachen Beispielen.
HINWEIS Ich entschuldige mich für die Bilder, ich weiß, es ist nicht ganz klar. Es gibt 5 Flussbereiche, die über den Rasterbereich verteilt sind. Ich werde versuchen, es in Kürze zu bearbeiten und zu aktualisieren.
Ich glaube, ich habe ein viel klareres Verständnis für diese nach Ihrer Antwort zu lesen, so es Ihnen danken! Können Sie erklären, wo sich die Methode/eventHandler befinden müssen? – wellington
Das hängt wahrscheinlich davon ab, wo Sie sie erstellen. Da Sie Ihren textArea über eine Schaltfläche erstellen, könnten Sie wahrscheinlich den eventHandler direkt dort anschließen. In diesem Beispiel habe ich nur 'initialize (URL, ResourceBundle)' verwendet, das von 'Initializable' im' Controller' geerbt wird. Es ist also verdrahtet, wenn es initialisiert ist. – Jaims