Grafik über JPanels hinweg verschieben

Doltsche

Mitglied
Hallo zusammen

Ich stehe vor dem folgenden Problem:

Ich habe zwei JPanels. In einem befinden sich Objekte (Rectangles), die ich mit der Maus nach dem Drag'n'Drop Prinzip ohne Probleme verschieben* kann. Aber leider nur innerhalb des jeweiligen JPanels .
Ich würde nun gerne die Objekte von einem JPanel in ein anderes JPanel verschieben können.

Eine mögliche Vorstellung wäre eine Art TopLayer. Wenn sich ein Objekt im Drag'n'Drop-Modus befindet wird dieses an den TopLayer übergeben und von diesem gerendert bis es wieder "abgelegt" wird.

Aber ob das eine gute Idee ist... ?

Freundliche Grüsse

Samuel

*: Mauskoordinaten dem Objekt übergeben -> repaint()
 
Hallo,

Eine mögliche Vorstellung wäre eine Art TopLayer. Wenn sich ein Objekt im Drag'n'Drop-Modus befindet wird dieses an den TopLayer übergeben und von diesem gerendert bis es wieder "abgelegt" wird.

Aber ob das eine gute Idee ist... ?

Das ist eine gute Idee. ;-)
Genau so wird das nämlich gemacht. Ein JFrame besteht aus einer RootPane. Eine RootPane besteht grob gesagt aus mehreren Schichten. Eine davon ist beispeilsweise die ContentPane. Aber eine weitere ist die GlassPane. Das ist eine unsichtbare Komponente ganz vorne. Diese ist default unsichtbar (setVisible(false)).
Du kannst aber auch ein normales JPanel als GlassPane setzen (setGlassPane()).
So kannst du bei DnD dein Rectangle von dem einen JPnanel entfernen, der GlassPane hinzufügen und bem Drop dem anderen JPanel hinzufügen.
Wenn du es nicht unbedingt über dem ganzen Fenster machen möchtest, kannst du dir auch eine eigene JRootPane anlegen.

Schau mal hier
How to Use Root Panes (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)

Gruß

zerix
 

Zurück
Oben