Polygon per Drag&Drop verschieben

MaggyMo

Aktives Mitglied
Hallo,

mein Problem ist, dass ich nicht weiß, wie ich an die neuen Koordinaten des Polygons komme, nachdem ich es verschoben habe.
Ich habe das wie folgt programmiert:

final ObjectProperty<Point2D> mousePosition = new SimpleObjectProperty<>();
test.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
mousePosition.set(new Point2D(event.getSceneX(), event.getSceneY()));
}
});

test.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
double deltaX = event.getSceneX() - mousePosition.get().getX();
double deltaY = event.getSceneY() - mousePosition.get().getY();
kugelLager.setLayoutX(test.getLayoutX()+deltaX);
kugelLager.setLayoutY(test.getLayoutY()+deltaY);
mousePosition.set(new Point2D(event.getSceneX(), event.getSceneY()));
}
});

Das Verschieben klappt auch, aber leider werden die Punkte die ich verwende um ein Polygon zu erzeugen dadurch nicht aktualisiert. Hat jemand eine Idee, wie ich das Problem beheben kann?

Liebe Grüße
 
M

Mart

Gast
translate x ist die x koordinate in deinem szene graphen und wenn du es da hinschiebst wo die maus los gelassen wird auf was wirst du dann die x koordinate setzen müssen?
 

MaggyMo

Aktives Mitglied
Alte x-Koordinate + Deltax?
Ich verstehe es gerade leider nicht.
Und wie komme ich denn an den translate-Wert? also wie sette ich den neuen Translate-Wert nach der Verschiebung?
 
Zuletzt bearbeitet:
M

Mart

Gast
falls du javafx hast, muss jeder node die variable translate x und translate z haben ...

die werte setzt du auf die werte des cursors ncahdem du die maustaste los lässt
 

MaggyMo

Aktives Mitglied
Also dann einfach so?
test.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
double deltaX = event.getSceneX() - mousePosition.get().getX();
double deltaY = event.getSceneY() - mousePosition.get().getY();
test.setLayoutX(kugelLager.getLayoutX()+deltaX);
test.setLayoutY(kugelLager.getLayoutY()+deltaY);
mousePosition.set(new Point2D(event.getSceneX(), event.getSceneY()));
test.setTranslateX(event.getSceneX());
test.setTranslateY(event.getSceneY());
}
});
Wenn ich das so einbinde springt das Polygon erstmal ein ganzes Stück nach unten und die Werte sind auch nicht richtig.
 

MaggyMo

Aktives Mitglied
Habe es mal so probiert, aber das klappt auch nicht
test.setOnMouseReleased(new EventHandler<MouseEvent>() {

@Override
public void handle(MouseEvent event) {
// TODO Auto-generated method stub
test.setTranslateX(mousePosition.get().getX());
test.setTranslateY(mousePosition.get().getY());
}
});
 
M

Mart

Gast
Java:
    final Sphere sphere = new Sphere(50);

    final Measure dragMeasure = new Measure();
    final Measure position = new Measure();
    sphere.setOnMousePressed(mouseEvent -> {
        dragMeasure.x = mouseEvent.getSceneX() - position.x;
        dragMeasure.y = mouseEvent.getSceneY() - position.y;
        sphere.setCursor(Cursor.MOVE);
    });
    sphere.setOnMouseDragged(mouseEvent -> {
        position.x = mouseEvent.getSceneX() - dragMeasure.x;
        position.y = mouseEvent.getSceneY() - dragMeasure.y;
        sphere.setTranslateX(position.x);
        sphere.setTranslateY(position.y);
    });
    sphere.setOnMouseReleased(mouseEvent -> sphere.setCursor(Cursor.HAND));
    sphere.setOnMouseEntered(mouseEvent -> sphere.setCursor(Cursor.HAND));

    bottomHeader.getChildren().addAll( sphere);

}

class Measure {
    double x, y;

    public Measure() {
        x = 0; y = 0;
    }
}

ich hatte es vor längerer zeit mal so gelöst die sphere ist einfach nur ein 3D element aber da sollte dein label auch damit funktionieren

Java:
public void drag(MouseEvent event) {
  Node n = (Node)event.getSource();
  n.setTranslateX(n.getTranslateX() - event.getX());
  n.setTranslateY(n.getTranslateY() - event.getY());
}
das ist der wichtige teil eig...das ist eine berechnung die dir die verschiebung in 2D berechnet


ka wie mans erklären soll...mein prof hatte damals ne halbe stunde an einem quadrat rum gezeichnet um die verschiebung darzustellen
 

MaggyMo

Aktives Mitglied
Java:
    final Sphere sphere = new Sphere(50);

    final Measure dragMeasure = new Measure();
    final Measure position = new Measure();
    sphere.setOnMousePressed(mouseEvent -> {
        dragMeasure.x = mouseEvent.getSceneX() - position.x;
        dragMeasure.y = mouseEvent.getSceneY() - position.y;
        sphere.setCursor(Cursor.MOVE);
    });
    sphere.setOnMouseDragged(mouseEvent -> {
        position.x = mouseEvent.getSceneX() - dragMeasure.x;
        position.y = mouseEvent.getSceneY() - dragMeasure.y;
        sphere.setTranslateX(position.x);
        sphere.setTranslateY(position.y);
    });
    sphere.setOnMouseReleased(mouseEvent -> sphere.setCursor(Cursor.HAND));
    sphere.setOnMouseEntered(mouseEvent -> sphere.setCursor(Cursor.HAND));

    bottomHeader.getChildren().addAll( sphere);

}

class Measure {
    double x, y;

    public Measure() {
        x = 0; y = 0;
    }
}

ich hatte es vor längerer zeit mal so gelöst die sphere ist einfach nur ein 3D element aber da sollte dein label auch damit funktionieren

Java:
public void drag(MouseEvent event) {
  Node n = (Node)event.getSource();
  n.setTranslateX(n.getTranslateX() - event.getX());
  n.setTranslateY(n.getTranslateY() - event.getY());
}
das ist der wichtige teil eig...das ist eine berechnung die dir die verschiebung in 2D berechnet


ka wie mans erklären soll...mein prof hatte damals ne halbe stunde an einem quadrat rum gezeichnet um die verschiebung darzustellen
Aber die Methode drag wird da ja auch garnicht aufgerufen oder?
 

MaggyMo

Aktives Mitglied
Im Prinzip war mein Vorgehen identisch, abgesehen von der drag-Methode. Wenn ich das mal auf meinem Code übernehme springt das Polygon allerdings immernoch nach unten, sobald man die Maustaste los lässt. Das liegt halt an dieser drag-Methode.
test.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
posXMeasure = event.getSceneX() - posX;
posYMeasure = event.getSceneY() - posY;
}
});

test.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
posX = event.getSceneX() - posXMeasure;
posY = event.getSceneY() - posYMeasure;
test.setTranslateX(posX);
test.setTranslateY(posY);
}
});

test.setOnMouseReleased(new EventHandler<MouseEvent>() {

@Override
public void handle(MouseEvent event) {
// TODO Auto-generated method stub
test.setTranslateX(test.getTranslateX() - event.getX());
test.setTranslateY(test.getTranslateY() - event.getY());
}
});
 
Zuletzt bearbeitet:
M

Mart

Gast
das springen kannst du lösen in dem du mouse clicked .. mouse pressed .. mouse released benutzt und kein drag und das polygon so verschiebst

weil drag sich einmischt mit hintergrund funktionen
 

MaggyMo

Aktives Mitglied
das springen kannst du lösen in dem du mouse clicked .. mouse pressed .. mouse released benutzt und kein drag und das polygon so verschiebst

weil drag sich einmischt mit hintergrund funktionen
Wenn ich dann mouseDragged zu MousePressed ändere kann man das Objekt aber nicht mehr per Drag&Drop verschieben sondern es springt direkt heruner.

Und die neuen Positionen der einzelnen Punkte werden auch nicht aktualisiert
 
M

Mart

Gast
dann verändere die position pro frame und nicht nur einmal am ende :=)

ausserdem hast du auch gruppen usw..
damit du nicht nur 1 ding verschiebst sondern das ganze teil
 
M

Mart

Gast
zb mit bindings die aktiv sind solange du geklickt hast bzw solange du die mouse nicht losgelassen hast bindet sich die position deines nodes an deine maus ...du verschiebst es nur 1 mal im moment ich würde es immer mitnehmen
 

MaggyMo

Aktives Mitglied
Aber die Verschiebung an sich passt doch schon nicht.
Wenn ich nur einmal auf das Polygon klicke, springt es direkt 100 -150 Pixel nach unten und dann nochmal 50- 100Pixel nach rechts. Und die "neuen" Koordinaten müssten doch aich schon angepasst werden oder nicht?
 

MaggyMo

Aktives Mitglied
zb mit bindings die aktiv sind solange du geklickt hast bzw solange du die mouse nicht losgelassen hast bindet sich die position deines nodes an deine maus ...du verschiebst es nur 1 mal im moment ich würde es immer mitnehmen
Hast du da eine Idee, wie man vorgehen kann?
Es kann doch eigentlich nicht so unnötig schwer sein, ein Polygon per Drag&Drop zu verschieben und gleichzeitigt die gesetzten Punkte zu aktualisieren.
 
M

Mart

Gast
setz sie in eine gruppe und verschieb die gruppe ...und nicht das polygon

falls es sowieso nur 1 polygon ist dann dürften die punkte auch angepasst sein
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Wie funktioniert Polygon? AWT, Swing, JavaFX & SWT 1
C Polygon Koordinaten richtig sortieren AWT, Swing, JavaFX & SWT 7
S GeneralPath in Polygon umwandeln..? AWT, Swing, JavaFX & SWT 5
Q AWT Path2D Polygon mit "Loch" AWT, Swing, JavaFX & SWT 0
S Polygon mit double-Koordinaten AWT, Swing, JavaFX & SWT 2
S AWT Skalieren von Polygon über Area klappt nicht AWT, Swing, JavaFX & SWT 4
R Polygon-Animation mit Darstellungsfehlern AWT, Swing, JavaFX & SWT 5
S Swing Polygon-Button AWT, Swing, JavaFX & SWT 21
C Clipping funktioniert mit eigenem Polygon nicht AWT, Swing, JavaFX & SWT 8
B Polygon mit contains() nutzen AWT, Swing, JavaFX & SWT 4
F polygon object "stirbt" vor Ausführung in paint() AWT, Swing, JavaFX & SWT 4
U offenes Polygon AWT, Swing, JavaFX & SWT 2
D Polygon mit der Maus zeichnen AWT, Swing, JavaFX & SWT 2
K Polygon in image variable? AWT, Swing, JavaFX & SWT 2
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
AmsananKING ListView Drag And Drop AWT, Swing, JavaFX & SWT 0
AmsananKING Drag And Drop Filenames Inside A Listview AWT, Swing, JavaFX & SWT 1
DonBronson Java Graphics bewegbar machen (Drag&Drop) AWT, Swing, JavaFX & SWT 3
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
N Drag and Drop Fenster AWT, Swing, JavaFX & SWT 11
F Drag&Drop mit Transparenter Farbe bei PNG AWT, Swing, JavaFX & SWT 0
D JavaFX Pane per Drag&Drop bewegen? AWT, Swing, JavaFX & SWT 2
L JavaFX Drag and Drop funktioniert nicht AWT, Swing, JavaFX & SWT 3
J Drag and Drop von eigenen Objekten AWT, Swing, JavaFX & SWT 3
J Drag and Drop eines Buttons AWT, Swing, JavaFX & SWT 0
T Swing Drag and Drop für JComponents AWT, Swing, JavaFX & SWT 1
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
F Drag und Drop AWT, Swing, JavaFX & SWT 0
M JavaFX Absoluter Fokus während drag Event AWT, Swing, JavaFX & SWT 10
L JavaFX JavaFX Chart Drag and Drop AWT, Swing, JavaFX & SWT 3
D JavaFX Drag&Drop mehrerer TreeViews oder TableViews AWT, Swing, JavaFX & SWT 1
P Drag & Drop zwischen Panels AWT, Swing, JavaFX & SWT 0
U Drag and Drop mit imageview AWT, Swing, JavaFX & SWT 0
U Drag and Drop imageviews AWT, Swing, JavaFX & SWT 8
D SteelSeries in Netbeans als Drag-and-Drop einbinden AWT, Swing, JavaFX & SWT 0
C JTable Drag and Drop von Zeilen innerhalb einer Table AWT, Swing, JavaFX & SWT 2
S Swing Update eine JTabelle nach einer Drag&Drop Operation AWT, Swing, JavaFX & SWT 0
S Swing Suche Drag & Drop Beispiele AWT, Swing, JavaFX & SWT 1
H Drag component out of window AWT, Swing, JavaFX & SWT 1
A Drag and Drop mit JAVAFX- Scenebuilder AWT, Swing, JavaFX & SWT 1
R Performance Drag and Drop & Timer AWT, Swing, JavaFX & SWT 3
R Drag and Drop Problem auf Jpanel AWT, Swing, JavaFX & SWT 2
N Swing JTable und Drag und Drop AWT, Swing, JavaFX & SWT 2
A Drag and Drop eigener Objekte AWT, Swing, JavaFX & SWT 7
C Drag and Drop (inventar) AWT, Swing, JavaFX & SWT 15
F Swing Drag and Drop in JTree aus verschiedenen Listen AWT, Swing, JavaFX & SWT 6
T Swing JButton per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 5
Iron Monkey JFileChooser - Drag and Drop AWT, Swing, JavaFX & SWT 5
Iron Monkey Nach Drag & Drop die Datei auf Komponent darstellen AWT, Swing, JavaFX & SWT 2
M AWT Drag n Drop-Support für Component AWT, Swing, JavaFX & SWT 5
HaukeG Swing Drag & Drop in verschiedenen Varianten AWT, Swing, JavaFX & SWT 4
S Swing Drag&Drop mit TransferHandler und JPanels AWT, Swing, JavaFX & SWT 8
H Drag-Evente nach Container wechsel AWT, Swing, JavaFX & SWT 2
C Swing Simulation von Drag and Drop Events AWT, Swing, JavaFX & SWT 3
H Swing "Drag and Drop" eines JComponent über ein JPanel AWT, Swing, JavaFX & SWT 2
R Drag 'n Drop AWT, Swing, JavaFX & SWT 3
S Selektion bei Drag&Drop AWT, Swing, JavaFX & SWT 4
D Drag-Action: Innerhalb meiner View? AWT, Swing, JavaFX & SWT 3
C Swing Drag and Drop mit Objekten in einem Fenster. AWT, Swing, JavaFX & SWT 9
T SWT Drag&Drop: Eclipse FileTransfer mit Icons AWT, Swing, JavaFX & SWT 14
F Drag & Drop durch Verbindungslinien AWT, Swing, JavaFX & SWT 10
T Swing Drag and Drop - JLabels tauschen statt überschreiben AWT, Swing, JavaFX & SWT 11
S Drag and Drop über 2 Panels AWT, Swing, JavaFX & SWT 2
K JButtons innerhalb eines JPanels verschieben (DRAG&DROP) AWT, Swing, JavaFX & SWT 5
B Drag and Drop AWT, Swing, JavaFX & SWT 6
K Drag and Drop Workbench AWT, Swing, JavaFX & SWT 2
P SWT Eclipse Draw2D Drag and Drop (ruckelt) AWT, Swing, JavaFX & SWT 4
F SWT Drag and Drop im TreeViewer AWT, Swing, JavaFX & SWT 4
B Swing Drag&Drop mit Feedback (Image am Mauszeiger) AWT, Swing, JavaFX & SWT 7
Spin JFrame/ Frame Drag and Drop AWT, Swing, JavaFX & SWT 13
A TransferHandler & Drag n' Drop AWT, Swing, JavaFX & SWT 2
R Drag an Drop JTable Zelle AWT, Swing, JavaFX & SWT 6
D Drag & Drop - node.isRoot AWT, Swing, JavaFX & SWT 3
E Swing Drag n Drop Verschieben von Labels o.ä. AWT, Swing, JavaFX & SWT 10
S Drag wie bei JToolbar mit JPanel AWT, Swing, JavaFX & SWT 3
E Swing Beim Drag & Drop, Drag verbieten?! AWT, Swing, JavaFX & SWT 2
E JTree Autoscroll bei Drag and Drop AWT, Swing, JavaFX & SWT 4
F Swing Problem mit Drag&Drop in JTable AWT, Swing, JavaFX & SWT 4
C keine weiteren Events während Drag&Drop Operation möglich? AWT, Swing, JavaFX & SWT 5
E Drag&Drop zwischen 2 Listen AWT, Swing, JavaFX & SWT 5
0 Swing Drag n' Drop Bug wenn Source und Target gleiche Komponente? AWT, Swing, JavaFX & SWT 4
C Drag and Drop JPanel auf JPanel nach drop erneut verschieben? AWT, Swing, JavaFX & SWT 3
T Swing JInternal Frame Clippingfehler bei drag AWT, Swing, JavaFX & SWT 4
M Swing JTable Drag'n'Drop von Dateien AWT, Swing, JavaFX & SWT 3
M Drag and Drop: Quellfenster AWT, Swing, JavaFX & SWT 2
M Buttons per Drag & Drop im GridBagLayout verschieben AWT, Swing, JavaFX & SWT 6
M Swing JList > Drag & Drop AWT, Swing, JavaFX & SWT 2
J Drag&Dropt mit Swing AWT, Swing, JavaFX & SWT 3
C Drag an Drop vom JTree zur JTable AWT, Swing, JavaFX & SWT 4
S Swing DnD: Image während Drag-Operation ändern AWT, Swing, JavaFX & SWT 3
Z Drag and Drop auf Application AWT, Swing, JavaFX & SWT 3
S Swing DnD: Wie finde ich heraus, von welcher Zelle aus im JTable der Drag gestartet wurde? AWT, Swing, JavaFX & SWT 3
G Drag and Drop JTree to Canvas AWT, Swing, JavaFX & SWT 7
H Drag&Drop von JComponents AWT, Swing, JavaFX & SWT 6
G JTable drag and drop AWT, Swing, JavaFX & SWT 4
H Drag&Drop mit GWT AWT, Swing, JavaFX & SWT 8
B Swing Drag&Drop einzelner Zellen in einer JTable AWT, Swing, JavaFX & SWT 12
A Swing Drag and Drop TreeNode User Object AWT, Swing, JavaFX & SWT 3
P JList: Reihenfolge der Elemente per Drag'n'Drop ändern. AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben