Objekte auf Fenster verschieben. Bewegliche jPanels.

Status
Nicht offen für weitere Antworten.

Borti

Mitglied
Moin moin,

ich habe da ein Problem beim verschieben von Objekten. Ich habe ein Fenster in dem ich eine ToolBar eine StatusBar
und ein ScrollPane habe. Die ToolBar ist vorerst egal. Die StatusBar nutze ich derzeit um mir Koordinaten anzeigen
zu lassen. Auf dem ScrollPane befindet sich ein jPanel worauf sich wiederum zwei jPanel (flaeche, flaeche2) befinden
die ich verschieben kann.

So sieht das aus



flaeche und flaeche2 besitzen jeweils ein mousePressed und ein mouseDragged Event um sie zu verschieben.
Das Verschieben der Flächen nach links und oben soll geblockt werden (rote Linie), d.h. es soll nicht möglich sein die Flächen
aus dem Fensterfocus zu schieben. Wenn jemand versucht die Fläche über die linke Grenze oder über die obere Grenze zu schieben,
dann soll es einfach an der Grenze andocken.

Wie hier zu sehen



Dazu habe ich folgende Funktion geschrieben.
Code:
private void getJPanelFlaeche2Koordinaten()
    {
        int intObenLinksX = jPanelFlaeche2.getX();
        int intObenLinksY = jPanelFlaeche2.getY();
        
        int intUntenRechtsX = jPanelFlaeche2.getX() + jPanelFlaeche2.getWidth();
        int intUntenRechtsY = jPanelFlaeche2.getY() + jPanelFlaeche2.getHeight();
        
        jLabel1.setText( "oben links    x: " + intObenLinksX + "      " + "y: " + intObenLinksY );
        jLabel2.setText( "unten rechts    x: " + intUntenRechtsX  + "      " + "y: " + intUntenRechtsY );
     
        /** Verhindert, dass die verschiebbaren Flaechen
         * das Fenster nach oben oder nach rechts verlassen koennen.
         */
        if( intObenLinksX < 0 )
        {
            jPanelFlaeche2.setLocation( 0 , intObenLinksY );
        }
       
        if( intObenLinksY < 0 )
        {
            jPanelFlaeche2.setLocation( intObenLinksX , 0 );
        }
    }

Diese Funktion rufe ich im mousePressed sowie im mouseDragged Event auf. Und genau in dieser Funktion scheint der Fehler zu liegen,
denn wenn ich an der oberen Grenze angekommen bin und dann die Fläche nach links verschiebe bewegt sie sich aus dem Fenster.

Wenn ich in der Funktion in der zweiten if abfrage die Variable intObenLinksX gegen jPanelFlaeche2.getX() austausche dann funktioniert
es ohne Probleme.

Was mache ich falsch?
 

Leroy42

Top Contributor
Das ist doch logisch.

Falls die Bedingung der 1. Abfrage zutrifft, setzt du bereits die neue Location. Hiervon
bekommt deine Variable intObenLinksX allerdings nichts mit, da sie noch den
Wert von vor der 1. setLocation() beinhaltet.

BTW. intObenLinksX, jPanelFlaeche2 :shock:
Es ist doch wohl kaum nötig in jedem Variablennaemen ihren Typ mitzuschleppen.
 

Borti

Mitglied
Naja ganz so logisch finde ich das nicht.

hmm dann verstehe ich wohl das mouseDragged Event noch nicht richtig. Wenn ich meine Funktion getJPanelFlaeche2Koordinaten() in dem mouseDragged Event ausführe, dann müsste doch aber bei jeder Mausbewegung die Funktion erneut aufgerufen werden und so mit in der Variablen intObenLinksX der richtige Wert stehen oder irre ich mich?

BTW mein chef will das so haben :p und er will auch selbst sprechende Variablennamen also nicht meine entscheidung :) und da ich mit Netbeans und Matisse arbeite ist das nicht ganz so schlimm da er fast alles automatisch ändert
 

kaie

Bekanntes Mitglied
Wofür benötigst Du denn die eigene Methode? Reicht nicht sowas?
Code:
public Component dragComponent = null;
public int dragX = 0;
public int dragY = 0;
public void mousePressed( MouseEvent me )
{
  dragComponent = me.getSource();
  dragX = me.getX();
  dragY = me.getY();
}
public void mouseDragged( MouseEvent me )
{
  if( dragComponent!=null )
  {
     int x = dragComponent.getLocation().x+me.getX()-dragX;
     int y = dragComponent.getLocation().y+me.getY()-dragY;
     if( x<0 ) x=0;
     if( y<0 ) y=0;
     dragComponent.setLocation(x,y);
  }
}
 

Borti

Mitglied
Okay das erste habe ich geschafft nun geht es weiter.

Als nächstes soll das Programm, wenn man eine der flaechen an den rechten unteren Rand verschiebt Automatisch mit gescrollt werden. Wenn das ende der Scrollfläche erreicht ist, soll diese Automatisch um eine bestimmte pixel Fläche vergrößert werden.

Das mit dem Automatischen vergrößern der Scrollfläche funktioniert, nur das mitscrollen noch nicht so wie es soll.

Bisher mache ich das so

Code:
        if( !jPanelCenterScrollPane.getVisibleRect().contains( jPanelFlaeche.getBounds() ) )
         {
            jScrollPane1.getViewport().scrollRectToVisible( jPanelFlaeche.getBounds() );
        }

Aber das ist irgendwie scheisse. Ruck ruck und es scrollt auch viel zu schnell und wenn man eine flaeche schnell aus dem Frame zieht ist es verschwunden.

Also wie bekomm ich nen Autoscroll hin?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Swing Focus der Radio Buttons + text bleibt gleich und gleichzeitige ausgabe zweier Objekte in 1. Fenster AWT, Swing, JavaFX & SWT 3
X Durch DrawLine verschwindet das Fenster und die Objekte AWT, Swing, JavaFX & SWT 13
E Swing-Fenster als Objekte im Sinne des OO-Prgrammparadigmas AWT, Swing, JavaFX & SWT 2
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 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
F Swing Objekte mit Maus verschieben AWT, Swing, JavaFX & SWT 8
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
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
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