2016-11-22 8 views
-1

Was ich erreichen möchte, ist einfach, ich drücke ein JButton (genannt 'rechts') und die x Grenzen eines JLabel wird um 100 erhöht, effektiv das JLabel zu bewegen 100 Pixel nach rechts. Ich habe mit Sachen zu experimentieren, wie:Wie man die x Grenzen eines Jlabels auf Tastendruck hinzufügt

 if(clicked == right) { 
      piece.getBounds().x = +100; 
     } 

und ich versuchte:

 if(clicked == right) { 
      piece.addBounds(100,0,0,0); 
     } 

die Methode addBounds für Typ nicht definiert war JLabel so habe ich versucht:

 if(clicked == right) { 
      piece.setBounds(+100,0,0,0); 
     } 

und deutlich alle der oben genannten hat nicht funktioniert, aber waren den Versuch wert. Gibt es eine Möglichkeit zu tun, was ich versucht habe?

+0

Es scheint, dass dies besser erreicht werden kann, indem die Werte eines'ElefyBorder' geändert werden, der auf ein einzelnes Label angewendet wird, oder indem eine Komponente komplett weggelassen wird und eine Zeichenkette oder ein Bild benutzerdefiniert gezeichnet wird. Was ist der letztendliche Zweck all dieser "Bewegung eines Labels"? Siehe auch [Was ist das XY-Problem?] (Http://meta.stackexchange.com/q/66377) –

+0

Was ist der 'LayoutManager' der Komponente, in der das Label lebt? Ein minimales, vollständiges Beispiel würde Ihnen helfen. – hendrik

Antwort

0

Die Grenzen sind eigentlich ein Rechteck, und so können Sie die JLabel die Bounds zu bekommen, seine x-Position vorrücken und dann die Grenzen festlegen, indem Sie die entsprechenden Methoden aufrufen:

Rectangle bounds = piece.getBounds(); // get the bounds 
bounds.x += 100; // increment the x value 
piece.setBounds(bounds); // re-set the new bounds 

repaint(); // call repaint on the container that holds the JLabel so it is repainted 
+0

Danke! Ich weiß noch nicht viel über Java, lerne immer noch, schätze deine Antwort! –

0

Wenn ich mich richtig erinnere, die Schaukel Komponenten in Java müssen neu gezeichnet werden, wenn eine Änderung an ihnen vorgenommen wird.

Versuchen Sie einfach die Methode "repaint()" aufzurufen, wenn die Schaltfläche gedrückt wurde und Ihre Änderungen an der Komponente aktualisiert werden sollen.

Verwandte Themen