JLabel bewegen

Hallo leute ich mal wieder :D

Also nun will ich folgendes machen ich möchte mein JLabel auf meinem Frame von links nach rechts (bzw von rechts nach links)bewegen. Jedoch sowie ich es gemacht habe funktioniert es nicht. Habe setLocation und setBounds versucht. Als layout benutze ich ein Null Layout. Hatte mich halt bei google eingelesen und dachte es verstanden zu haben jedoch ja iwie nicht. Hier im forum habe ich jetzt auch nichts gefunden was sehr hilfreich war.

Edit: Bewegt sich jetzt habe ein
Code:
label1.paintImmediately(label1.getVisibleRect());
hinzugefügt jetzt habe ich aber das problem das das bild einen streifen hinterläst

Edit2: Zudem läuft das bild auch nicht flüssig was kann man da gegen tun?

Hier mal mein Ansatz(die methode die das label bewegen soll):

Java:
		public static void labelBewegen(){
			bewegen = new Thread() {
				public void run() {
					
					javax.swing.Timer timer = new javax.swing.Timer( 1, new ActionListener() {
						  public void actionPerformed( ActionEvent e ) {
							  
							  SwingUtilities.invokeLater(new Runnable() {
								  public void run()  {
									  while(true){
										  while(bild1x != 0){
											  bild1x = bild1x-1;
											  System.out.println(bild1x);
											  label1.setBounds(bild1x, bild1y, 289, 132);
											  try {
												Thread.sleep(10);
											} catch (InterruptedException e) {
											}
										  }
										 while(bild1x != 1000){
											  bild1x = bild1x+1;
											  System.out.println(bild1x);
											  label1.setLocation(bild1x, bild1y);
											  try {
												Thread.sleep(10);
											} catch (InterruptedException e) {
											}
										  }
										  
									  }
									  
									  
								  };
								  });}
							  });
					timer.start();
					while(frame.getAus() == false){
						if(frame.getAus() == true){
							System.exit(0);
						}
						}
						  }
				};
				};

Mfg Owned

Ps : Ich denke das ist eine schöner Gänsehaut Code vom Aufbau her :D
 
Zuletzt bearbeitet:
S

SlaterB

Gast
das mit dem Timer und SwingUtilities.invokeLater hast du blind kopiert ohne darüber nachzudenken,
wofür diese komplizierte Konstruktion gut ist?

es geht darum dass
- die Aktione parallel zur GUI stattfindet, so dass der GUI-Thread auch Zeit zum Zeichnen hat,
daher ein Timer statt einfacher z.B. nur sleep,
- die einzelnen Aktionen zwischen den Pausen müssen aber besser vom GUI-Thread ausgeführt werden,
sonst mögliche Konflikte, wenn zwei Koche im Brei rühren, daher SwingUtilities.invokeLater

wenn du aber in einem invokeLater die gesamte Aktion legst, dann passiert währenddessen gar nichts,
verwende den Timer so dass er alle 10ms aktiv wird (wobei ich persönlich Zweifel habe, dass alles unter 20-30ms überhaupt genau gerechnet wird)

und dann führe immer nur einen Schritt aus, der zu diesem Zeitpunkt sinnvoll ist, keine Schleifen, jedenfalls keine mit sleep,
das kommt durch die Timer-Schleife
 

Michael...

Top Contributor
Ps : Ich denke das ist eine schöner Gänsehaut Code vom Aufbau her :D
Volle Zustimmung!!!

Besonders gruselig ist das hier:
Java:
	while(frame.getAus() == false){
		if(frame.getAus() == true){
			System.exit(0);
		}
	}
In einer Schleife ständig Status eine Variablen zu pollen (schon mal die Auslastung des Prozessors dabei beobachtet?) ist ein No Go. Dafür gibt es Listener, Observer...

Dann verwendet man entweder Thread (besser Runnable) oder Timer - nicht beides verschachtelt - mach diesem Fall keinen Sinn. Hier sind wohl mehrere Informationsquellen kombiniert worden.

Bin mir nicht sicher, ob setLocation die Aktualisierung des Layouts anstößt. Vermutlich nein. Änderungen am Layout sind immer recht "schwerwiegend" und müssen durch ein validate() Aufruf am Container gerade gezogen werden.
 
Also habe ich das jetzt richtig verstanden ich soll die berechnungen vor dem Invoke.later machen und dann erst timer + die neuen koordinaten?

Dann verwendet man entweder Thread (besser Runnable) oder Timer - nicht beides verschachtelt - mach diesem Fall keinen Sinn. Hier sind wohl mehrere Informationsquellen kombiniert worden.

Da hast du vollkommen recht. Weil es an den meisten stellen im internet nicht genau erklärt wird.

In einer Schleife ständig Status eine Variablen zu pollen (schon mal die Auslastung des Prozessors dabei beobachtet?) ist ein No Go. Dafür gibt es Listener, Observer...

Das hatten wir in der Schule so gelernt weil wir noch keine listner und so hatten, deswegen habe ich es so gemacht
 
Zuletzt bearbeitet:
S

SlaterB

Gast
nein du sollst aus dem InvokeLater die Schleife streichen, evtl. ein if, jedenfalls nur EINE Aktion ausführen, kein sleep,
und den Timer auf 10ms stellen, dieser stellt die Schleife da, 1ms wie im Moment ist halt schneller

über endgültigen Abbruch des Times musst du vielleicht noch nachdenken,
aber ich kann nun wirklich nicht alles selber machen..

"Also nun will ich folgendes machen ich möchte ..."
klingt ja auch wie Vorstellung des Tagespensums und andere sollen es lösen,
ohne Kenntnisse und langes Lesen von Büchern geht sowas nicht..
 
Ja der entgültige abbruch ist dafür da das sich Alle Threads wirklich schließen und nicht vieleicht doch weiter laufen habe halt mehrere in diesem Projekt.
 

njans

Top Contributor
ActionListener#actionPerformed werden immer auf dem EDT ausgeführt. Daher brauchst du das invokeLater nicht.
 
S

SlaterB

Gast
der Swing-Timer führt den ActionListener im GUI-Thread aus,
ich hatte überlegt, aber nicht nachgeforscht
Java:
 synchronized void post() {
        if (notify == false || !coalesce) {
            notify = true;
            SwingUtilities.invokeLater(doPostEvent);
        }
    }
[..]
  /**
     * DoPostEvent is a runnable class that fires actionEvents to 
     * the listeners on the EventDispatchThread, via invokeLater.
     * @see #post
     */
    class DoPostEvent [..]

aber Vorsicht, ich kann in meinem eigenen Thread auch ein ActionListener-Objekt erstellen,
gar actionPerformed() von GUI-Listenern aufrufen ;)
die Klasse selber ist nicht gesichert
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F JLabel mit ImageIcon per Button bewegen AWT, Swing, JavaFX & SWT 4
U Swing JLabel bewegen mittels Thread AWT, Swing, JavaFX & SWT 3
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
C Swing Übergabe von String an JLabel AWT, Swing, JavaFX & SWT 9
H Swing Anpassen der Textgröße im JLabel funktioniert nur bedingt AWT, Swing, JavaFX & SWT 7
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
D JLabel übereinanderlegen AWT, Swing, JavaFX & SWT 5
E JLabel kopieren AWT, Swing, JavaFX & SWT 31
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
kodela HTML-tags für JLabel AWT, Swing, JavaFX & SWT 9
J Swing JLabel Verknüpfung aktualisieren AWT, Swing, JavaFX & SWT 3
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
H String teilen, damit bei JLabel keine Punkte am Ende angezeigt werden AWT, Swing, JavaFX & SWT 4
S Swing JLabel Text mit der Zeit ändern AWT, Swing, JavaFX & SWT 1
E JLabel AWT, Swing, JavaFX & SWT 1
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
I JLabel neue Zeile AWT, Swing, JavaFX & SWT 4
L JLabel ist verzerrt/größer als eingestellt AWT, Swing, JavaFX & SWT 15
B Observer Pattern JLabel ändern AWT, Swing, JavaFX & SWT 7
R Kann JLabel in ActionListener nicht aufrufen AWT, Swing, JavaFX & SWT 4
E Wie kann ich ein JLabel auf größe der schriftlänge setzten? AWT, Swing, JavaFX & SWT 2
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
BreakdownBob Swing JLabel verschwindet hinter Image AWT, Swing, JavaFX & SWT 2
L Kalendar als JLabel einfügen AWT, Swing, JavaFX & SWT 3
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
it_is_all jLabel.setText -> Char in Str: NullpointerException AWT, Swing, JavaFX & SWT 1
4 Swing JLabel wird ,,abgehackt" AWT, Swing, JavaFX & SWT 3
it_is_all JLabel.setIcon - funktioniert nicht mehr AWT, Swing, JavaFX & SWT 2
P Aktualisierung von jLabel in jFrames AWT, Swing, JavaFX & SWT 8
DaCrazyJavaExpert Swing JLabel Klickanimation AWT, Swing, JavaFX & SWT 4
A Swing JLabel als Parameter übergeben AWT, Swing, JavaFX & SWT 9
M JLabel ausrichten AWT, Swing, JavaFX & SWT 2
S JLabel setText() Problem AWT, Swing, JavaFX & SWT 6
Z jLabel von Methode aus aktualisieren AWT, Swing, JavaFX & SWT 7
T JLabel Textinhalt von Oben anzeigen AWT, Swing, JavaFX & SWT 1
N JLabel in JTabbedPane verschieben AWT, Swing, JavaFX & SWT 2
N JLabel ändern während Programm ausgeführt wird AWT, Swing, JavaFX & SWT 4
R Swing JLabel berührung an einem anderen Label prüfen AWT, Swing, JavaFX & SWT 3
Thallius Swing "..." beim JLabel verhindern? AWT, Swing, JavaFX & SWT 3
OlafHD JLabel im JFrame Zentrieren AWT, Swing, JavaFX & SWT 2
T Event Handling JLabel als eigener Button AWT, Swing, JavaFX & SWT 7
T JLabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
KilledByCheese Swing 2D JLabel Array Maze zeichnen AWT, Swing, JavaFX & SWT 2
F Abgeleitetes JLabel AWT, Swing, JavaFX & SWT 16
D Swing keine JLabel-Aktualisierung bei "externem" Aufruf durch Helferklasse AWT, Swing, JavaFX & SWT 10
S jLabel HTML Formatierung AWT, Swing, JavaFX & SWT 2
J Statisches JLabel adden AWT, Swing, JavaFX & SWT 4
J JLabel Visible setzen in KeyListener AWT, Swing, JavaFX & SWT 13
T JLabel in die Mitte(JLabel.CENTER geht nicht) AWT, Swing, JavaFX & SWT 12
2 JLabel - setText ändert den Text nicht AWT, Swing, JavaFX & SWT 4
B Jlabel Text von anderen Klasse aus ändern AWT, Swing, JavaFX & SWT 9
stylegangsta JLabel durch Klick auf JButton einblenden AWT, Swing, JavaFX & SWT 16
stylegangsta JLabel anzuzeigenden Text zentrieren AWT, Swing, JavaFX & SWT 9
K Swing unterschied JTextField und JLabel AWT, Swing, JavaFX & SWT 7
F Swing JLabel in JFrame anpassen AWT, Swing, JavaFX & SWT 20
E JLabel aus Runnable ändern AWT, Swing, JavaFX & SWT 2
Z AWT JLabel setzt kein neuen Text AWT, Swing, JavaFX & SWT 6
D JLabel bei Aufruf neue Zeile AWT, Swing, JavaFX & SWT 5
W Swing JLabel jede Sekunde aktualisieren, ohne Timer zu benutzen AWT, Swing, JavaFX & SWT 4
F ListCellRenderer mit JLabel und MouseListener AWT, Swing, JavaFX & SWT 4
F Swing JLabel wird nicht sofort Angezeigt AWT, Swing, JavaFX & SWT 3
D Timer für Bildfolge in einem jLabel AWT, Swing, JavaFX & SWT 5
S JLabel-Text in Methode setzen? AWT, Swing, JavaFX & SWT 2
GreyFox JLabel in laufender Anwendung erzeugen AWT, Swing, JavaFX & SWT 6
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2
Z Auf ein JLabel drauf malen? AWT, Swing, JavaFX & SWT 1
S JLabel in den Vordergrund rücken AWT, Swing, JavaFX & SWT 1
A JLabel hochzählen lassen. AWT, Swing, JavaFX & SWT 6
S JLabel mit ImageIcon, komischer Rahmen? AWT, Swing, JavaFX & SWT 2
I Swing JLabel Bild für 1sec anzeigen lassen AWT, Swing, JavaFX & SWT 13
S JLabel anordnen AWT, Swing, JavaFX & SWT 2
J ungewollt-automatische Größenänderung von JLabel AWT, Swing, JavaFX & SWT 5
H AWT Fenster- und JLabel-Größe automatisch anpassen AWT, Swing, JavaFX & SWT 2
L 2D-Grafik PNG Datei in JLabel Array Problem AWT, Swing, JavaFX & SWT 4
S Swing Exception in thread "AWT-EventQueue-0" bei Jlabel AWT, Swing, JavaFX & SWT 4
B Swing JLabel und LayoutManager AWT, Swing, JavaFX & SWT 20
M Bild aus JLabel resizen und speichern AWT, Swing, JavaFX & SWT 0
A Swing JLabel/JTextField Inhalt mit JSlider verändern AWT, Swing, JavaFX & SWT 12
O Statusleiste mit JLabel aktualisieren AWT, Swing, JavaFX & SWT 5
G jLabel aus anderem Fenster ändern AWT, Swing, JavaFX & SWT 7
T JLabel Nullpunkt verschieben AWT, Swing, JavaFX & SWT 6
F Swing JPanel mit JLabel spinnt? AWT, Swing, JavaFX & SWT 2
M Massenweise JLabel ? oder ? AWT, Swing, JavaFX & SWT 3
J JLabel während einer methode aktualisieren AWT, Swing, JavaFX & SWT 6
R AWT JLabel oder JButton aktualisieren AWT, Swing, JavaFX & SWT 1
N JLabel HTML mit custom Font AWT, Swing, JavaFX & SWT 0
V JLabel bzw. GUI aus externen Thread ansteuern AWT, Swing, JavaFX & SWT 3
G JLabel verdeckt AWT, Swing, JavaFX & SWT 12
A JLabel zeichendicke einstellen AWT, Swing, JavaFX & SWT 3
B Repaint auf JFrame, JLabel und ImageIcon AWT, Swing, JavaFX & SWT 4
S JLabel zeigt ImageIcon nicht AWT, Swing, JavaFX & SWT 13
S jLabel / jText beim starten ausblenden AWT, Swing, JavaFX & SWT 2
A Array von JLabel mit Grafiken anzeigen AWT, Swing, JavaFX & SWT 3
T Swing HTML Text aus JLabel ohne "HTML-Tags" in String einlesen AWT, Swing, JavaFX & SWT 5
A JLabel im Listener färben AWT, Swing, JavaFX & SWT 11
M JLabel über JButtons zeichnen AWT, Swing, JavaFX & SWT 4
T Kreis in Jlabel darstellen. AWT, Swing, JavaFX & SWT 13
SexyPenny90 JLabel liegt unter meiner Turtle AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben