Komponente auf Glasscheibe platzieren

Ich habe eine Unterklasse von JLabel, die eine Komponente meiner GUI bildet. Ich habe die Möglichkeit implementiert, die Komponente per Drag & Drop von einem Container in einen anderen zu ziehen, jedoch ohne visuelle Effekte. Ich möchte, dass dieses JLabel dem Cursor folgt, während das Objekt von einem Container in einen anderen gezogen wird. Ich dachte mir, ich könnte einfach eine Glasscheibe erstellen und darauf zeichnen. Auch nachdem ich die Komponente zur Glasscheibe hinzugefügt, die Komponente sichtbar und die Glasscheibe sichtbar gemacht und die Glasscheibe als undurchsichtig festgelegt habe, wird die Komponente immer noch nicht angezeigt. Ich weiß, dass die Komponente funktioniert, da ich sie dem Inhaltsbereich hinzufügen und anzeigen lassen kann.

Wie füge ich der Glasscheibe eine Komponente hinzu?

Finally fand heraus, wie man das einfache Beispiel zum Laufen bringt. Danke, @akf. Ich konnte diese Lösung an mein ursprüngliches Problem anpassen und so ca. 60 Zeilen Java2D-Code entfernen, der manuell eine Darstellung des JLabels lieferte.

package test;

import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;

public class MainFrame extends JFrame {

    /**
     * @param args
     */
    public static void main(String[] args) {
        MainFrame mf = new MainFrame();
        mf.setSize(400, 400);
        mf.setLocationRelativeTo(null);
        mf.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        mf.setGlassPane(new JPanel());

        JLabel l = new JLabel();
        l.setText("Hello");
        l.setBorder(new LineBorder(Color.BLACK, 1));
        l.setBounds(10, 10, 50, 20);
        l.setBackground(Color.RED);
        l.setOpaque(true);
        l.setPreferredSize(l.getSize());

        //mf.add(l);
        ((JPanel)mf.getGlassPane()).add(l);
        mf.getGlassPane().setVisible(true);

        mf.setVisible(true);
    }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage