Verschiebbare JComponent

Status
Nicht offen für weitere Antworten.

Majiy

Mitglied
Ich habe eine Klasse "Tracker", die JComponent erweitert.
Sie wird per add(this) zu einer JFrame erweiternden Klasse hinzugefügt.

Die Objekte der Klasse "Tracker" sollen per mouseDragged innerhalb der JFrame verschiebbar sein. Das funktioniert mit per MouseMotionListener auch ganz gut (siehe geposteten Konstruktur der Klasse "Tracker").

Mein Problem ist folgendes: Wenn ich ein "Tracker" Objekt verschiebe, dann "hängt" sich das Objekt an der linken oberen Ecke an den Mauszeiger. Es sollte allerdings seine Position relativ zum Mauszeiger nicht ändern. Gibt es da eine praktikable Möglichkeit? Meine bisherigen Versuche (z. B. aus "getParent().getMousePosition().x" ein "getParent().getMousePosition().x - getMousePosition().x" zu machen) haben sehr interessante Fehlermeldungen produziert.

Code:
public Tracker( JFrame arg_parent , String arg_label , int arg_sizeX, int arg_sizeY, int arg_locationX , int arg_locationY ) {
    label = arg_label;
    sizeX = arg_sizeX;
    sizeY = arg_sizeY;
		
    addMouseMotionListener( new MouseMotionAdapter() {
        public void mouseDragged( MouseEvent e ) {
            if( getParent().getMousePosition() != null ) {
                setLocation( getParent().getMousePosition().x , getParent().getMousePosition().y );
            }
        }
    });
		
    arg_parent.add(this);
    setBounds( arg_locationX , arg_locationY , arg_sizeX , arg_sizeY );
}
 

André Uhres

Top Contributor
Auszug aus einem von meinen älteren Codeschnipsel:
Code:
/*
 * PlateContainer
 */
class PlateContainer extends JPanel implements MouseListener, MouseMotionListener{
    public PlateContainer() {
        addMouseListener(this);
        addMouseMotionListener(this);
    }
...
    public void mousePressed(MouseEvent e) {
        Component c = getComponentAt(e.getPoint());
        if (c instanceof Plate) {
            hitPlate = (Plate) c;
            deltaX = e.getX() - hitPlate.getX();
            deltaY = e.getY() - hitPlate.getY();
        }
    }
    public void mouseDragged(MouseEvent e) {
        if (hitPlate != null) {
            int x = (int) (e.getX() - deltaX);
            int y = (int) (e.getY() - deltaY);
            hitPlate.setLocation(x, y);
            repaint();
        }
    }
    private Plate hitPlate;
    private double deltaX;
    private double deltaY;
}
/*
 * Plate
 */
class Plate extends JPanel {
...
}
 

Majiy

Mitglied
Das klappt bei mir leider nicht. Folgende Bedingung "if (c instanceof Tracker)" wird nie erfüllt.

Wenn ich mir die Klasse von "c" ausgeben lasse, kommt da "javax.swing.JRootPane" heraus, unabhängig davon, ob ich irgendwo in die JFrame oder auf eines der verschiebbaren Panels klicke.

Irgend eine Idee, woran das liegen kann?
 

André Uhres

Top Contributor
Code:
public class MovingPlates extends JFrame {
    public MovingPlates() {
...
        PlateContainer cont = new PlateContainer();
        cont.setLayout(null);
        Plate plate = new Plate();
        plate.setBorder(BorderFactory.createLineBorder(Color.red));
        plate.setBounds(100,100,100,100);
        cont.add(plate);
        add(cont);
    }
...
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Verschiebbare "Buttons" in einer Tabelle AWT, Swing, JavaFX & SWT 3
P [gelöst] Verschiebbare Komponenten mit Linien verbinden AWT, Swing, JavaFX & SWT 2
B Batik: Inhalt JComponent to SVG? AWT, Swing, JavaFX & SWT 6
Hatsi09 JComponent anklicken und "entklicken" AWT, Swing, JavaFX & SWT 7
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
S Swing Schwierigkeiten mit JComponent AWT, Swing, JavaFX & SWT 4
T Swing JComponent vergrößern AWT, Swing, JavaFX & SWT 4
L JComponent und MouseMotionListener AWT, Swing, JavaFX & SWT 2
M Mouse Click Event ohne ein JComponent Objekt AWT, Swing, JavaFX & SWT 3
L Eigene JComponent in GridLayout AWT, Swing, JavaFX & SWT 9
Z JComponent's requestFocus() - Wieso nicht immer anwendbar? AWT, Swing, JavaFX & SWT 1
Z Java-Swing : JComponent AWT, Swing, JavaFX & SWT 2
W JComponent - ComponentListener - resized / moved AWT, Swing, JavaFX & SWT 5
Developer_X Wie heißt das JComponent hier? AWT, Swing, JavaFX & SWT 2
A Swing Eigene JComponent Scrollable AWT, Swing, JavaFX & SWT 6
R JComponent auf Canvas AWT, Swing, JavaFX & SWT 8
A Abgeleitete JComponent wird nicht gezeichnet AWT, Swing, JavaFX & SWT 10
A JComponent Größe AWT, Swing, JavaFX & SWT 8
T jcomponent wird nicht angezeigt AWT, Swing, JavaFX & SWT 9
S Eigene JComponent Image zeichnen AWT, Swing, JavaFX & SWT 3
H Swing "Drag and Drop" eines JComponent über ein JPanel AWT, Swing, JavaFX & SWT 2
N 2D-Grafik RTF in eigener JComponent AWT, Swing, JavaFX & SWT 2
D Swing JComponent zeichnen ohne sie zur Oberfläche hinzuzufügen AWT, Swing, JavaFX & SWT 2
P JComponent / JLabel drehen (Rotation) AWT, Swing, JavaFX & SWT 2
D JComponent erweitern AWT, Swing, JavaFX & SWT 4
1 JComponent -> java.lang.NullPointerException AWT, Swing, JavaFX & SWT 13
M 2x JComponent in einem JFrame darstellen? AWT, Swing, JavaFX & SWT 7
StupidAttack Animation, JComponent AWT, Swing, JavaFX & SWT 3
P Swing Eigene Komponente Entwickeln - erben von JComponent oder JPanel? AWT, Swing, JavaFX & SWT 5
B Wechsel JTextArea und JComponent AWT, Swing, JavaFX & SWT 9
S Unterscheiden ob ein Graphics-Objekt von einer JComponent oder einem BufferedImage kommt..? AWT, Swing, JavaFX & SWT 4
H JComponent == JTextfield? AWT, Swing, JavaFX & SWT 4
C Ermitteln ob JComponent einen Listener besitzt AWT, Swing, JavaFX & SWT 2
T Eigene JComponent AWT, Swing, JavaFX & SWT 4
G JComponent nachträglich in JPanel einfügen AWT, Swing, JavaFX & SWT 5
M Ganzen Frame mit JComponent ausfüllen AWT, Swing, JavaFX & SWT 9
M JMenu teilweise unter einer JComponent AWT, Swing, JavaFX & SWT 4
I Swing JComponent als BufferedImage speichern AWT, Swing, JavaFX & SWT 18
1 Eigene JComponent mit MouseListener versehen AWT, Swing, JavaFX & SWT 10
T JComponent nur in Swing verwendbar? AWT, Swing, JavaFX & SWT 6
M Mehrere Icons in einer JComponent AWT, Swing, JavaFX & SWT 5
Dragonfire Image von JComponent AWT, Swing, JavaFX & SWT 2
T x und y herrausfinden eines JComponent auf JFrame AWT, Swing, JavaFX & SWT 14
J absolute Position einer JComponent ermitteln AWT, Swing, JavaFX & SWT 4
B "weiches" Bewegen von einem JComponent AWT, Swing, JavaFX & SWT 18
ARadauer JPanel vs JComponent AWT, Swing, JavaFX & SWT 2
I JDialog aus JComponent erstellen AWT, Swing, JavaFX & SWT 2
S JComponent u. JPanel ausdrucken AWT, Swing, JavaFX & SWT 3
J SWT JComponent Problem AWT, Swing, JavaFX & SWT 4
T JComponent überzeichnen? AWT, Swing, JavaFX & SWT 2
G JComponent in JTable AWT, Swing, JavaFX & SWT 8
M JComponent wird in JFrame nicht angezeigt AWT, Swing, JavaFX & SWT 4
D bei Thread in JComponent malen NullPointerException AWT, Swing, JavaFX & SWT 3
S Alle EventListener einer JComponent abfragen? AWT, Swing, JavaFX & SWT 3
S JComponent in JPanel darstellen AWT, Swing, JavaFX & SWT 2
N JComponent#getClientProperty(key) welche Schlüssel gibt es? AWT, Swing, JavaFX & SWT 3
E Drucken von JComponent. AWT, Swing, JavaFX & SWT 4
S JComponent ersetzen AWT, Swing, JavaFX & SWT 13
R Resize Problem bei JComponent AWT, Swing, JavaFX & SWT 2
M JButton in JComponent abfragen AWT, Swing, JavaFX & SWT 6
S Mausbehandlungen für JComponent AWT, Swing, JavaFX & SWT 7
C zeichnen auf jComponent AWT, Swing, JavaFX & SWT 3
S in einem JComponent zu zeichnen AWT, Swing, JavaFX & SWT 4
G Grafik auf JComponent ohne Überschreiben von Paint-Methoden AWT, Swing, JavaFX & SWT 4
R JComponent malt seine Kinder nicht AWT, Swing, JavaFX & SWT 8
G JComponent Hintergrund AWT, Swing, JavaFX & SWT 3
M JMenu auf JComponent? AWT, Swing, JavaFX & SWT 10
G Graphics (g) und JComponent prob. AWT, Swing, JavaFX & SWT 2
G Klasse XYComponent extends JComponent AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben