Drag and Drop eigener Objekte

Animal21

Mitglied
Hallo Leute,

ich habe folgendes Szenario:

Alle meine Components sind selbst geschrieben, soll heißen, die Graphik ist aus eigener Feder und ich verwende JComponent als Basis für alle.

Die Component gl_Card beinhaltet mehrere gl_CardButtons. In diesem gl_CardButton ist ein Objelt vom Typ Student gespeichert.

In meinem Programm gibt es nun eine gewisse anzahl dieser gl_Card's und diese sollen die möglichkeit haben, Studentenobjekte, welche in den Buttons drin gespeichert sind, austauschen zu können. Dies soll passieren, indem am so einen gl_CardButton dragged und auf ein anderes gl_Card zieht.

Ich habe schon erfolgreich ein DropEreigniss (auf einer anderen Component) abgefangen, welches eine text-Datei einliest...
Ich hab auch schon etwas mit dem Clipboard rumgespielt, aber ich komm nicht drauf, wie ich nun mein Studenten-Objekt (das ich bereits im Clipboard habe) an ein Drag-Event hängen kann, damit es vom DropEvent des gl_Card erkannt wird.

Gruß
Ani
 
Zuletzt bearbeitet:

Animal21

Mitglied
Also im Prinzip heißt das, ich muss mir einen eigenen TransferHandler für meine Klasse Student schreiben und dann?
Mein JComponent gl_CardButton unterstützt ja von Haus aus die SetDragEnable-Methode nicht, ich muss das praktisch selbst auslösen?! - Nur wie?

Oder bin ich einfach nur Blind?

gruß
ani
 

tschero

Aktives Mitglied
Hi,

wenn Du alles von Hand erstellen willst, brauchst Du auch nicht unbedingt einen TransferHandler (kannst Du natürlich nehmen).

Du könntest folgende Schritte ausführen.

- eine JLayeredPane erstellen (dort kann man die "Z-Order" von JComponents verändren, sehr hilfreich bei D&D)

- alle Deine JKomponents in die JLayeredPane stecken

- eigenen MouseListener erstellen (für die Events "MousePressed" zum aufnehmen und "MouseReleased" zum ablegen)

- eigenen MouseMotionListener erstellen (für das Event "MouseDragged")

- in den ListenerKlassen die entsprechenden Methoden aufrufen


ZB:

Java:
/**
     * Diese Funktion holt die Komponente ganz nach oben (changeZOrder(e)),
     * speichert Ihren Startpunkt (saveStartPointDragComponent(e)),
     * laesst eine drag Komponente unter der Maus Mittig "einschnappen"
     * @param e
     *      */
    private void fitComponentToDrag(MouseEvent e){}

Java:
/**
     * holt die angeklickte Komponente ganz nach vorne bzw. oben
     * @param dragTarget ist die geforderte JComponent
     * 
     */
    private void changeZOrder(JComponent comp){}

Java:
/**
 * Diese Funktion zieht die aufgenommene Komponente dem Mauszeiger hinterher
 * @param e
 *  */
     private void dragComponent(MouseEvent e){}

Java:
/**
     * diese Funktion legt die uebergebene Komponente auf der Buehne ab.
     * Wenn sich die Komponente ueber einem regulaeren DropTarget befindet, wird diese dort abgelegt.
     * Ansonsten bewegt sich die Komponente wieder auf den Punkt zurueck, wo sie aufgenommen wurde.
     * @param e MouseEvent aus MouseReleased
     * fertig
     */
    private void dropTarget(MouseEvent e){}

Java:
/**
     * Diese Funktion prueft ob sich eine dragKomponente ueber einer dropKomponente befindet.
     * Wenn dies der Fall ist, wird die Variable dropComponentToChange mit dem Wert von dropTarget befuellt
     * @param dragComponent die dragKomponente welche abgelegt werden soll
     * @return boolean
     * fertig
     */
    private boolean isDragTargetOverDropTarget(JComponent dragComponent){}

Java:
/**
     * diese Funktion richtet das uebergebene dragTarget auf dem ebenfalls uebergebenen DropTarget mittig aus
     * und setzt die standard Border auf der DropKomponente
     * @param dropTarget
     * @param dragTarget
     * fertig
     */
    private void alignCentre(JComponent dropTarget, JComponent dragTarget){}

Den Inhalt der Methoden habe ich mal rausgelassen da Du ja schon Variablen und weiteren Code vorbereitet hast.
Nur die Kommentare hab ich mal dringelassen.

Mit Sicherheit geht die Geschichte auch einfacher, besser, usw.

Bei mir funktioniert es gut.

Ich hoffe Du kannst etwas damit anfangen.

Gruß
tschero
 

Animal21

Mitglied
Vll hast du das Problem falsch verstanden, aber ich will nicht meine JComponents ziehen und bewegen, sondern ich möchte, wenn ich einen MouseDragged auf meinem gl_CardButton ausführen, mein StudentenObjekt (also keine Swing-Komponente) "an die Maus heften" und dann auf einer anderen eigenen JComponent (gl_Card) ablegen, die je nachdem darauf reagiert.

Meine Frage ist also eher, wie ich dieses DragEreignis "manuell" ausführen kann, wenn die JComponent das nicht selbst unterstützt.

gruß
ani
 

Marco13

Top Contributor
Es gibt SO viele Dokumentationen und Beispielseiten dazu, dass die Frage vermutlich etwas spezifischer werden muss. Ein KSKB von irgendeinem der ersten Websuchergebnisse zu den entsprechenden Stichworten hier rein zu kopieren kann ja nicht das Ziel sein.
 

tschero

Aktives Mitglied
Die Funktionsbeispiele welche ich gepostet habe müssen nur mit entsprechendem Code gefüllt werden.

Und die Schritte hier...

Du könntest folgende Schritte ausführen.

- eine JLayeredPane erstellen (dort kann man die "Z-Order" von JComponents verändren, sehr hilfreich bei D&D)

- alle Deine JKomponents in die JLayeredPane stecken

- eigenen MouseListener erstellen (für die Events "MousePressed" zum aufnehmen und "MouseReleased" zum ablegen)

- eigenen MouseMotionListener erstellen (für das Event "MouseDragged")

- in den ListenerKlassen die entsprechenden Methoden aufrufen

...passen auch noch.

Kann den Dein StudentenObjekt nicht JComponent erweitern?

Dann sollte es auch mit der JLayeredPane keine Probleme geben.

Ansonsten hat SlaterB ja schon was dazu gesagt.

Gruß
tschero
 

Animal21

Mitglied
unter folgendem link habe ich gefunden was ich suchte:
Click

@tschero:
Student ist eine reine Datenklasse...
Welche in einer JComponent hinterlegt wird... (nur am Rande)

gruß
ani
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
M Polygon per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 26
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
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
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
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
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
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
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
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
C Drag an Drop vom JTree zur JTable AWT, Swing, JavaFX & SWT 4
Z Drag and Drop auf Application 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
K Swing Wie ändere ich die default action für Drag&Drop AWT, Swing, JavaFX & SWT 6
R JLayeredPane - Drag&Drop - mouseDragged AWT, Swing, JavaFX & SWT 6
C JTable mit RowSorter und Drag & Drop: Zeile verschieben AWT, Swing, JavaFX & SWT 4
V SWT TreeViewer Drag'n'Drop LocalSelectionTransfer AWT, Swing, JavaFX & SWT 10
R Swing JLayeredPane - Drag&Drop Positionen vertauschen AWT, Swing, JavaFX & SWT 3
F Drag & Drop mit eigenen Komponenten AWT, Swing, JavaFX & SWT 2
B SWT - Drag & Drop innerhalb einer Table AWT, Swing, JavaFX & SWT 3
S Drag'n'Drop AWT, Swing, JavaFX & SWT 8
E Drag&Drop JTable; Renderer füllt alle Zellen AWT, Swing, JavaFX & SWT 10
M Drag & Drop in Swing (createTransferable) AWT, Swing, JavaFX & SWT 6
T Drag Quelle beim Drop AWT, Swing, JavaFX & SWT 6
A Drag & Drop von Zeilen innerhalb einer Tabelle AWT, Swing, JavaFX & SWT 2
E Drag & Drop von jTree in JList AWT, Swing, JavaFX & SWT 5
P Dateien per Drag&Drop ins Java-Fenster ziehen AWT, Swing, JavaFX & SWT 8
G JTree Node ggf. aufklappen bei Drag & Drop? AWT, Swing, JavaFX & SWT 7
J Drag'n Drop imm selben Frame unterbinden AWT, Swing, JavaFX & SWT 3
S Table Row per Drag and Drop in andere Table schieben? AWT, Swing, JavaFX & SWT 14
X wiedermal Drag n Drop AWT, Swing, JavaFX & SWT 2
P Drag & Drop AWT, Swing, JavaFX & SWT 2
X Drag and Drop AWT, Swing, JavaFX & SWT 2
F Drag&Drop Jlist -> JList AWT, Swing, JavaFX & SWT 3
G Drag and Drop mal wieder? AWT, Swing, JavaFX & SWT 2
G Drag And Drop von Component (List, Tree) zum Desktop AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben