JavaFX Pane per Drag&Drop bewegen?

Hallo zusammen,

ich merke gerade dass ich seit geraumer Zeit mit FX keine Berührungspunkte mehr hatte und versuche vergeblich ein Pane per Drag&Drop in ein Clipboard zu kopieren. Für mein Beispiel benutze ich den Scene Builder daher die @FXML Annotationen. Also Strings hin und her zu schieben per Drag&Drop ist mit den Tutorials kein Problem. Aber bei Pane, was eigentlich nichts anderes als ein Node ist, hört bei mir das Glück auf.

Mein eigentliches Ziel(Siehe Bild 1) das graue Pane welches sich in einer VBox befindet in die andere VBox(rotes und blaues Pane befinden sich dort) einzugliedern. Aber selbst das grundlegend scheitert. Jetzt bin ich nicht sicher ob nicht auf einem Holzweg bin und solche Geschichten nur mit einer Mausbewegung möglich sind. Wenn doch, ein simples Beispiel würde mir schon genügen.

Danke wieder im Voraus.
Java:
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.DataFormat;
import javafx.scene.input.Dragboard;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.TransferMode;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;

public class PrimaryController {
    
    @FXML
    Pane grey_panel;
    @FXML
    VBox vbox_1;
    
    @FXML
    public void onMouseDragOver_grey() {
        System.out.println("DragoOver");
    }
    
    @FXML
    public void onDragDetected_grey() {

        grey_panel.setOnDragDetected(new EventHandler<MouseEvent>() {

            @Override
            public void handle(MouseEvent event) {
                System.out.println("dadd");
                Dragboard db = grey_panel.startDragAndDrop(TransferMode.MOVE);
                
                DataFormat key = new DataFormat("Drag");
                ClipboardContent content = new ClipboardContent();
                content.put(key, grey_panel.getChildren());
                
                db.setContent(content);
                
                event.consume();
                
            }
            
        });
        
    }
    
}
 

Anhänge

Ich würde die "Listenfunktion" nicht selber bauen sondern zwei Listviews verwenden. Drag&Drop für Listviews findet man genug Beispiele im Netz. Du müsstest dann nur noch das "entfernen" bzw. "einfüge" in die neue Liste implementieren.
 
Danke für deine Antwort. Ich will aber keine Listview, denn mit Listview kenne ich den Weg. Ich will später auf jedem Pane eine Combobox/Choicebox platzieren und dann das ganze von links nach rechts oder rechts nach links verschieben können in die jeweilige VBox.
 
Zuletzt bearbeitet:
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben