JPanel mit Objekten selektieren wie unter Windows / Ubuntu

Status
Nicht offen für weitere Antworten.

localhorst

Mitglied
Hallo,

Ich habe ein JPanel, auf denen sich zum Beispiel Labels befinden.
Habe die Aufgabe bekommen, das JPanel so zu erweitern, dass man Objekte wie auf den Windows oder Ubuntu Desktop selektieren und per drag und drop verschieben kann.
(Auch mehrere Sachen mit strg markieren).

Dies kann man mit Mauslistenern und einen Keylistener realisieren. Mit Hilfe der Methode getComponentAtPoint(), damit kann man ja prüfen, ob sich an dieser Stelle ein Label befindet.

Dies ist aber relativ aufwendig, deswegen wollte ich fragen, bevor ich damit Anfange, ob schon jemand sowas realisiert hat und ein Beispiel posten würde.

Gruß, Localhorst
 
Mal schnell zusammengetippt/generieren lassen.
Erstmal ans Panel nen MouseListener und nen MouseMotionListener hängen.

Java:
jPanel1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jPanel1MouseClicked(evt);
            }
        });
 jPanel1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseDragged(java.awt.event.MouseEvent evt) {
                jPanel1MouseDragged(evt);
            }
        });

Hier die beiden Methoden die aufgerufen werden.

Java:
private void jPanel1MouseDragged(java.awt.event.MouseEvent evt) {
        if(isLabel) {
            jLabel1.setLocation(evt.getPoint());
        }
    }

    private void jPanel1MouseClicked(java.awt.event.MouseEvent evt) {
        if(jPanel1.getComponentAt(evt.getPoint()) instanceof JLabel) {
            isLabel = true;
        }
        else {
            isLabel = false;
        }
    }

isLabel ist eine globale boolean Variable mit false initialisiert.
Nur auf die Schnelle probiert. Sicher noch ausbaufähig 🙂
Musst zuerst einmal auf das Label klicken, dann kannst es im Panel verschieben.

PS.: Hoffe ich habe das richtig verstanden so, ansonsten wenns um D&D von Datein geht siehe Post über mir.
 
Danke, für die Hilfe 🙂
das war zwar nicht das, was ich brauchte, habs aber jetzt doch selber programmiert.

Gruß, localhorst
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben