Ich habe eine TableView mit Zellen drin. Meine Tabelle funktioniert wie ein Koordinatensystem, nicht wie eine normale Tabelle. Click here for more about this.JavaFX - Drag & Drop TableCell
Jetzt muss ich eine Zelle zu einem anderen ziehen und ablegen (Move).
Hier ist mein Code für Drag and Drop:
tableView.setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
Dragboard db = tableView.startDragAndDrop(TransferMode.MOVE);
ClipboardContent content = new ClipboardContent();
int x = tableView.getSelectionModel().getSelectedCells().get(0).getColumn();
int y = tableView.getSelectionModel().getSelectedCells().get(0).getRow();
for(Event e:eventList) {
if(e.getAblaufX() == x && e.getAblaufY() == y) {
//System.out.println("Event Abteilung: " + e.getAbteilung());
content.put(Config.SERIALIZED_MIME_TYPE, e.getId());
}
}
db.setContent(content);
event.consume();
}
});
tableView.setOnDragDropped(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
System.out.println("Drag Dropped!");
Dragboard db = event.getDragboard();
if (db.hasContent(Config.SERIALIZED_MIME_TYPE)) {
int draggedEventId = (Integer) db.getContent(Config.SERIALIZED_MIME_TYPE);
Event draggedEvent = null;
//System.out.println("Dragged Event ID: " + draggedEventId);
for(Event e:eventList) {
if(e.getId() == draggedEventId) {
draggedEvent = e;
eventMap.get(e).setAblaufX(ablaufX); // <-- HERE I NEED CELL INDEX
eventMap.get(e).setAblaufY(ablaufY); // <-- HERE I NEED ROW INDEX
//eventMap.put(new TablePos(draggedEvent.getAblaufX(), draggedEvent.getAblaufY()), draggedEvent);
}
}
if(draggedEvent != null) {
event.setDropCompleted(true);
event.consume();
System.out.println(draggedEvent.getText());
}
}
}
});
tableView.setOnDragOver(new EventHandler <DragEvent>() {
public void handle(DragEvent event) {
event.acceptTransferModes(TransferMode.ANY);
event.consume();
}
});
ich die heikelen Zeilen mit "// <-- HERE I NEED CELL INDEX
" kommentiert und "// <-- HERE I NEED ROW INDEX
"
Aus diesen Zeilen, ich brauche die column und die rowIndex des abgelegte Zelle (die neue Zelle)
Vielleicht ‚i missunderstood aber warum don t deklarieren Sie Ihre int X- und Y-Variablen außerhalb der Zieh- Erkennungsfunktion und setzen sie nur dann, wenn der Ziehvorgang erkannt wird. Dann können Sie den aktuellen Wert in der Ziehfunktion – Inge
abrufen und wie bekomme ich die Koordinaten (columnIndex und rowIndex) der Zelle, in die sie fallen soll? –