Swing Objekte mit Maus verschieben

Fireball

Aktives Mitglied
Hallo,

ich brauch mal wieder eure Hilfe.

Ich suche ein bestimmtes Programmbeispiel. Dort wurde ein Frame aufgebaut (weis) und es wurden ein paar Objekte wie Kreis, Linie, Rechteck gezeichnet die man dann mit der Maus verschieben konnte.
Glaub das ganze wurde in einem Array dann irgendwie gespeichert...

Kann mir einer von euch die Source oder den Link zu diesem sagen?

Gerne sind auch andere ähnliche Beispiele gesehen.

Vielen Dank
 

Fireball

Aktives Mitglied
Hallo,

ja sowas hab ich gemeint.

Hab jetzt sowas schon selber gebastelt, habe aber ein Problem. Ich zeichne ein Image in ein Label und will das dann mit mouseDragged verschieben.

Wie krieg ich aber jetzt raus ob ich wirklich auf dem Bild stehe, mit einer Rechteck hab ich das hinbekommen mit getBounds..., wie läuft das mit dem Bild dann ab.

Ein Beispiel wäre super.

Danke
 
S

SlaterB

Gast
ein Bild wird doch auch ein Rechteck sein mit Länge, Breite und irgendeiner gemerkten Positition, Ecke oben-links oder woanders,
da kannst du dir alle 4 Eckpunkt ausrechnen, kennst den gesamten Bereich, kennst die Mausposition usw.
 

Fireball

Aktives Mitglied
Stand etwas auf dem Schlauch.

Hab das jetzt so gelöst. Wenn es ne bessere Lösung gibt dann bitte posten.

Code:
	public void mouseDragged(MouseEvent e) {
	      int dx = e.getX() - x;
	      int dy = e.getY() - y;

          Point clickedPoint = e.getPoint();        

          if (positionX - clickedPoint.x <= imageWidth
              && positionY - clickedPoint.y <=imageHeight) {
	    	  positionX += dx;
	    	  positionY += dy;
	    	  repaint();
          }

	      x += dx;
	      y += dy;

	}
 

André Uhres

Top Contributor
Ich hänge gewöhnlich den MouseAdapter direkt an das Label. Wenn wir in "mousePressed" den Ausgangspunkt festhalten, dann können wir in "mouseDragged" einfach die Location relativ zum Ausgangspunkt anpassen:
Java:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.event.*;
public class MoveLabelDemo extends JApplet {
    private JLabel label = new JLabel("Hallo Welt");
    @Override
    public void init() {
        this.setSize(300, 300);
        this.setLayout(null);
        label.setBounds(50, 50, "Hallo Welt".length() * 10, 15);
        label.setCursor(new Cursor(Cursor.MOVE_CURSOR));
        this.add(label);
        this.setVisible(true);
        MouseAdapter mouseAdapter = new MouseInputAdapter() {
            private Point p1;
            @Override
            public void mousePressed(final MouseEvent e) {
                p1 = e.getPoint();
            }
            @Override
            public void mouseDragged(final MouseEvent e) {
                Point p2 = e.getPoint();
                Point loc = label.getLocation();
                loc.translate(p2.x - p1.x, p2.y - p1.y);
                label.setLocation(loc);
            }
        };
        label.addMouseListener(mouseAdapter);
        label.addMouseMotionListener(mouseAdapter);
    }
}

Gruß,
André
 
Zuletzt bearbeitet:

Fireball

Aktives Mitglied
Hab jetzt noch ein Problem.

Ich zeichne ein Bild in ein Label (setIcon), mein Label hat die ganze Mouselistener.

Wenn ich dann auf einen Button klicke wird noch ein kleines Bild (Pfeil) reingezeichnet, diesen kann ich dann verschieben und bekomm die Position zurück. Soweit so gut.

Wie kann ich allerdings dafür sorgen das mein Bild(Pfeil) nie das Hintergrundbild (also das Icon) verlässt. Ich also nie mit der Maus über den Rand fahren kann??
 
S

SlaterB

Gast
dass die Maus anhält wirst du kaum erreichen können bzw. sieht auch nicht schön aus,
du meinst das sicher so wie man Scrollbalken begrenzt?

Mathe Mathe Mathe,
berechne minimale/maximale Kooridinaten, x darf eben nicht < 0 sein oder was auch immer,
dann wird es schön am linken Rand der Eingrenzung gemalt, reagiert aber immer noch auf y-Änderungen usw.
 

André Uhres

Top Contributor
Wie kann ich allerdings dafür sorgen das mein Bild(Pfeil) nie das Hintergrundbild (also das Icon) verlässt..?

Hallo Fireball,

versuch's mal so:

Java:
...
    private Point top_leftPoint = new Point(), top_rightPoint = new Point(),
            bottom_leftPoint = new Point(), bottom_rightPoint = new Point();
    private Point top_leftPointC = new Point(), top_rightPointC = new Point(),
            bottom_leftPointC = new Point();
    private Rectangle rectContainer = new Rectangle();
...
            @Override
            public void mouseDragged(final MouseEvent e) {
...
                stayInContainer(label);
            }
        };
...
    public void stayInContainer(final Component comp) {
        // if the plate is too far in right-direction, move it back
        if (!isInContainer(comp)) {
            double x = top_rightPoint.getX();
            double xC = top_rightPointC.getX();
            if (x > xC) {
                comp.setLocation((int) (top_leftPoint.getX() + xC - x), (int) top_leftPoint.getY());
            }
        }
        // if the plate is too far in left-direction, move it back
        if (!isInContainer(comp)) {
            double x = top_leftPoint.getX();
            double xC = top_leftPointC.getX();
            if (x < xC) {
                comp.setLocation((int) (top_leftPoint.getX() + xC - x), (int) top_leftPoint.getY());
            }
        }
        // if the plate is too far in top-direction, move it back
        if (!isInContainer(comp)) {
            double y = top_leftPoint.getY();
            double yC = top_leftPointC.getY();
            if (y < yC) {
                comp.setLocation((int) top_leftPoint.getX(), (int) (top_leftPoint.getY() + yC - y));
            }
        }
        /* if the plate is is too far in bottom-direction, move it back */
        if (!isInContainer(comp)) {
            double y = bottom_leftPoint.getY();
            double yC = bottom_leftPointC.getY();
            if (y > yC) {
                comp.setLocation((int) top_leftPoint.getX(), (int) (top_leftPoint.getY() + yC - y));
            }
        }
    }

    private boolean isInContainer(final Component comp) {
        Container container = comp.getParent();
        rectContainer.width = container.getWidth();
        rectContainer.height = container.getHeight();
        int wC = (int) rectContainer.width;
        int hC = (int) rectContainer.height;
        top_leftPointC.x = rectContainer.x;
        top_leftPointC.y = rectContainer.y;
        top_rightPointC.x = (int) (top_leftPointC.getX() + wC);
        top_rightPointC.y = (int) top_leftPointC.getY();
        bottom_leftPointC.x = (int) top_leftPointC.getX();
        bottom_leftPointC.y = (int) top_leftPointC.getY() + hC;
        int w = comp.getWidth();
        int h = comp.getHeight();
        top_leftPoint.x = comp.getX();
        top_leftPoint.y = comp.getY();
        top_rightPoint.x = (int) top_leftPoint.getX() + w;
        top_rightPoint.y = (int) top_leftPoint.getY();
        bottom_leftPoint.x = (int) top_leftPoint.getX();
        bottom_leftPoint.y = (int) top_leftPoint.getY() + h;
        bottom_rightPoint.x = (int) top_leftPoint.getX() + w;
        bottom_rightPoint.y = (int) top_leftPoint.getY() + h;
        if (!rectContainer.contains(top_leftPoint)) {
            return false;
        }
        if (!rectContainer.contains(top_rightPoint)) {
            return false;
        }
        if (!rectContainer.contains(bottom_leftPoint)) {
            return false;
        }
        if (!rectContainer.contains(bottom_rightPoint)) {
            return false;
        }
        return true;
    }
...

Gruß,
André
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin Objekte refresh AWT, Swing, JavaFX & SWT 3
N Graphics Objekte scalen mit Veränderung des Bildschirms AWT, Swing, JavaFX & SWT 19
berserkerdq2 Skalieren sich javafx objekte automatisch auf die Bildschirmgröße AWT, Swing, JavaFX & SWT 6
Redeason Objekte in meiner GUI verschieben AWT, Swing, JavaFX & SWT 1
_user_q Objekte vom MainController in anderen Controller verwenden und andersherum (NullPointerException) AWT, Swing, JavaFX & SWT 14
_user_q JavaFX Wie kann ich alle Objekte außer eins deaktivieren (das Gleiche mit BoxBlur)? AWT, Swing, JavaFX & SWT 11
ExceptionOfExpectation MouseListener-Objekte zu den Graphics-Objekten einfügen AWT, Swing, JavaFX & SWT 3
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
B JavaFX Von welcher Klasse und zu welchem Zeitpunkt werden Event-Objekte erstellt? AWT, Swing, JavaFX & SWT 3
J Objekte von 2 GUIs zusammenfassen AWT, Swing, JavaFX & SWT 2
T Swing Objekte in Liste AWT, Swing, JavaFX & SWT 2
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
C JList: Bestimmte Objekte ausschließen AWT, Swing, JavaFX & SWT 1
MaxG. Swing Dynamisch grafische Objekte erzeugen AWT, Swing, JavaFX & SWT 12
Y Objekte grafisch darstellen ohne GMF - Composite auf Canvas? AWT, Swing, JavaFX & SWT 2
D Swing Swing Objekte sehen im Entwurf anders aus als beim Ausführen AWT, Swing, JavaFX & SWT 3
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
JG12111989 mehrere Polyline-Objekte zeichnen AWT, Swing, JavaFX & SWT 3
D Objekte einer Oberfläche in eine Datei/Ordner speichern AWT, Swing, JavaFX & SWT 9
T Rectangle Transparent und darunter liegende Objekte Bedienbar AWT, Swing, JavaFX & SWT 0
J Swing/AWT | Dynamisch erzeugte Objekte ansprechen AWT, Swing, JavaFX & SWT 1
Z Möglichkeit mit Listerners die Farbe meiner Objekte zu ändern AWT, Swing, JavaFX & SWT 15
GenerationLost Bilder an bestimmten Platz einfügen/Objekte visualisieren AWT, Swing, JavaFX & SWT 1
I Objekte aus contentPane löschen funktioniert nicht AWT, Swing, JavaFX & SWT 3
C Swing Java Objekte AWT, Swing, JavaFX & SWT 4
J JavaFX Eigene ListCell Problem(Objekte werden doppelt angezeigt) AWT, Swing, JavaFX & SWT 1
N Swing Alle Objekte anzeigen auch bei JPanel-Überlappung AWT, Swing, JavaFX & SWT 6
A Swing Focus der Radio Buttons + text bleibt gleich und gleichzeitige ausgabe zweier Objekte in 1. Fenster AWT, Swing, JavaFX & SWT 3
A Drag and Drop eigener Objekte AWT, Swing, JavaFX & SWT 7
M SWT Durchlagen der SWT Objekte mit Tabulator AWT, Swing, JavaFX & SWT 5
Ollek JList - neuer Eintrag in ArrayList dadurch keine Anzeige der Objekte AWT, Swing, JavaFX & SWT 18
S Swing Kopie eines JPanels inkl. aller objekte darin erstellen AWT, Swing, JavaFX & SWT 5
D Swing Objekte bewegen mit MouseMotionListener AWT, Swing, JavaFX & SWT 4
P Objekte anzeigen und verschieben - wie? AWT, Swing, JavaFX & SWT 6
F Swing ArrayList in JList anzeigen und Objekte auswählen AWT, Swing, JavaFX & SWT 2
G Objekte in und aus einer JTable laden AWT, Swing, JavaFX & SWT 5
propra Mehrere Objekte gleichzeitig verschieben AWT, Swing, JavaFX & SWT 7
propra Objekte auf Zeichenfläche verschieben AWT, Swing, JavaFX & SWT 2
propra 2D-Grafik Beliebig viele Objekte auf einer Zeichenfläche zeichnen AWT, Swing, JavaFX & SWT 15
T JList und Objekte AWT, Swing, JavaFX & SWT 7
M Objekte in JPanel bewegen AWT, Swing, JavaFX & SWT 4
E Objekte zu Path2D zusammensetzen AWT, Swing, JavaFX & SWT 2
M verschieben der Objekte in JPanel nur stückchenweise möglich AWT, Swing, JavaFX & SWT 14
4 AWT bestimmte Objekte zeichnen und löschen AWT, Swing, JavaFX & SWT 8
R komplette Objekte in JTable einfügen AWT, Swing, JavaFX & SWT 18
C File-Objekte an JList übergeben und abrufen AWT, Swing, JavaFX & SWT 6
J Objekte aus Defaulttablemodel AWT, Swing, JavaFX & SWT 5
K MouseListener für Objekte auf einem Frame AWT, Swing, JavaFX & SWT 4
S Swing mit ActionListener auf Objekte einer anderen Klasse zugreifen AWT, Swing, JavaFX & SWT 3
A Swing Dynamisch Objekte erzeugen AWT, Swing, JavaFX & SWT 3
M JGraph Kante ohne Objekte AWT, Swing, JavaFX & SWT 2
P Von einem Panel auf die Objekte des anderen Panels zugreifen AWT, Swing, JavaFX & SWT 3
T Mehrere sich bewegende Objekte in einem Frame AWT, Swing, JavaFX & SWT 14
L Dynamisch Objekte in Canvas zeichnen AWT, Swing, JavaFX & SWT 5
J SWT 4 Objekte auf einem Composite anordnen AWT, Swing, JavaFX & SWT 5
L SWT Objekte in GC? AWT, Swing, JavaFX & SWT 8
M grafische objekte erstellen und bewegen AWT, Swing, JavaFX & SWT 4
E Swing Objekte werden nicht angezeigt AWT, Swing, JavaFX & SWT 6
J Ansprechen untergeordneter Objekte AWT, Swing, JavaFX & SWT 6
C JTree Einzelne Objekte färben AWT, Swing, JavaFX & SWT 4
Airwolf89 Swing Dynamisch auf Objekte in einer GUI zugreifen AWT, Swing, JavaFX & SWT 10
S Java3D: Alle Objekte in BranchGroup löschen während Laufzeit AWT, Swing, JavaFX & SWT 3
M Objekte weitergeben AWT, Swing, JavaFX & SWT 3
1 Bubble Breaker - Objekte fallen nicht runter AWT, Swing, JavaFX & SWT 3
W Objekte auf JPanel bewegen??? AWT, Swing, JavaFX & SWT 2
F "Objekte" mit "Verbindungen" grafisch darstellen AWT, Swing, JavaFX & SWT 4
G Objekte in JComboBox? AWT, Swing, JavaFX & SWT 7
P Speichern und Auswahl gezeichneter Objekte AWT, Swing, JavaFX & SWT 7
G Graphics Objekte in AWT Container einfügen AWT, Swing, JavaFX & SWT 2
D DnD ganzer Objekte(Objekt erstellen) AWT, Swing, JavaFX & SWT 2
W 2 Objekte in eine Tabellenzelle? AWT, Swing, JavaFX & SWT 3
L Objekte in Liste oder ähnliches anzeigen AWT, Swing, JavaFX & SWT 3
S JFrame-Klasse soll ein/mehrere Objekte einer JPanel-Klasse-& AWT, Swing, JavaFX & SWT 3
O Eigene GUI Objekte entwerfen? AWT, Swing, JavaFX & SWT 3
O Eigenschaften größerer GUI-Objekte verwalten AWT, Swing, JavaFX & SWT 3
A JTable, eigenes TableModel und dessen Objekte AWT, Swing, JavaFX & SWT 4
G Canvas + Swing-Objekte AWT, Swing, JavaFX & SWT 5
G Objekte in SWT List AWT, Swing, JavaFX & SWT 3
D Schriftgrößen aller Objekte ändern AWT, Swing, JavaFX & SWT 19
X Durch DrawLine verschwindet das Fenster und die Objekte AWT, Swing, JavaFX & SWT 13
N [und täglich grüsst das.] Zeichnen -> Objekte verschwinde AWT, Swing, JavaFX & SWT 2
S JList mit DefaultListModel befüllt, wie Objekte selektieren? AWT, Swing, JavaFX & SWT 3
M grafische Objekte mit Listener versehen AWT, Swing, JavaFX & SWT 3
G JTextArea Objekte in einem Array speichern? AWT, Swing, JavaFX & SWT 3
G Aus Arraylist bestimmte Objekte wiedergegeben bekommen? AWT, Swing, JavaFX & SWT 7
M Keine Buttons oder sonstige Objekte in JFrame unter Linux AWT, Swing, JavaFX & SWT 4
L Mehrere Scrollbar objekte miteinander verbinden AWT, Swing, JavaFX & SWT 3
E Swing-Fenster als Objekte im Sinne des OO-Prgrammparadigmas AWT, Swing, JavaFX & SWT 2
B Objekte auf Fenster verschieben. Bewegliche jPanels. AWT, Swing, JavaFX & SWT 5
T Frage zu JTree: Leaf Objekte vergleichen AWT, Swing, JavaFX & SWT 3
G Einzelne Objekte neu zeichnen AWT, Swing, JavaFX & SWT 8
T Objekte in JList AWT, Swing, JavaFX & SWT 4
H JApplet fehler objekte unsichtbar. AWT, Swing, JavaFX & SWT 2
M Image-Objekte in JEditorPane anzeigen? AWT, Swing, JavaFX & SWT 3
F bewegte objekte mit awt AWT, Swing, JavaFX & SWT 2
B Zwei "gleiche" Objekte auf einem Frame platzieren AWT, Swing, JavaFX & SWT 2
F Objekte beliebigen Typs zu JComboBox hinzufügen AWT, Swing, JavaFX & SWT 7
J Anordung der Objekte in der Oberfläche? AWT, Swing, JavaFX & SWT 3
V Objekte "durch" ActionListener zeichnen AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben