java JPanel bewegen

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Auf den ersten Blick würde ich ja sagen, weil Dein Vergleichsoperator verkehrt herum geschrieben ist.

Aber ich gehe mal ne Wette ein, daß das bloß ein Tippfehler ist, weil Du das nicht mit copy & paste übernommen hast? Weil: Es fehlt dann auch noch ein Semikolon (beim x++), und Dein Programm wird ja aber offenbar compiliert und ausgeführt.

=============

Auf den zweiten Blick sehe ich, daß Du Deine Koordinatenänderung nicht "im Hintergrund ausführen" läßt. Sofern Du das im Vordergrund-Thread machen läßt, der auch für die Fensterdarstellung verantwortlich ist, kann das so nicht klappen: Stelle Dir die Threads als Personen vor, die Dein Programm abarbeiten, und dabei KEINE Möglichkeit haben, aus dem von Dir definierten Programmfluß auszubrechen.

Wenn da irgendwo hinten auf dem Zettel steht, daß der Typ den Fensterinhalt aktualisieren soll, aber vorn steht erstmal, daß er nahezu UNENDLICH (while) sich mit einer Variablen selbstbefriedigen soll (deren Werte nie jemand zu Gesicht bekommt - weil: es ist ja sonst niemand da, der den Fensterinhalt neu zeichnen könnte, gelle?; und den einzigen, der das bei Dir tun könnte, läßt Du in einer geschlossenen Schleifen-Anstalt Runden auf dem Hof laufen!), dann ist da nix an Reaktion zu sehen.

Ok schon mal danke für die gute Antwort ( schön, dass es noch Menschen gibt die auch gute Antworten schreiben können :D )! Zu 1. Ja das stimmt mit dem tippfehler, weil ich hab das so oder soähnlich gemacht, aber wieder rausgelöscht weil es ja nicht funktioniert hat.

Zu 2. Das Problem dabei hab ich verstanden ( hast du besser wie mein Buch erklärt :D! ), aber wie ich das Problem beheben lässt, da fällt mir nichts ein! Ich habe jeztzt noch weng rumprobiert um den Fehler zu beheben und das wichtige herauszuheben bzw. im Hintergrund laufen lassen. Könntest du mir einen TIpp geben? Wenn es dir hilft, kann ich dir auch den ganzen Quelltext posten, wird aber ein wenig lang...

Auf jedenfall danke für deine HIlfe, jetzt weiß ich wenigstens wo das Problem liegt!

MFG David Schwarzbeck

0
@davidschwarz

Die Handhabung von "Thread" (http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html) ist denkbar einfach:

  • Eigene Klasse vom Thread ableiten (weil Du in Java alles in Klassen verpacken mußt, nimm es hin!)
  • Dort eine einzige Funktion "run" überschreiben
  • Dort drin alles machen lassen, was in den Hintergrund soll
  • Die Sache starten wie im Beispiel in der Klassenbeschreibung dargestellt

Wenn Du etwas exakteres Timing statt mit "Thread.sleep" haben willst, kannst Du auch einen "Timer" verwenden. Der ist fast dasselbe wie ein Thread, nur daß Du periodisch wiederholte Aktionen nicht in einer while-Schleife mit sleep verpackst, sondern das while und sleep einfach wegläßt und das periodische Aufrufen den Timer-Innereien überläßt, die die Aufrufe auf längere Zeit betrachtet exakter auslösen.

0
@davidschwarz

Wie Du an dem Link zum "Thread" leicht erkennen kannst, gibt es in der Java-Referenzdokumentation zu jeder Klasse eine beschreibende HTML-Datei.

Ersetze einfach "Thread" durch "Timer" und Du bist am Ziel.

Wenn Du eine Übersicht über sämtliche Klassen des JRE haben willst, klicke auf der sich öffnenden Seite oben in der Menüleiste auf "Frames", dann bekommst Du eine Seitenansicht, wo links eine Spalte mit der alphabetisch sortierten Liste sämtlicher Klassen zu sehen ist, die in die links oben ausgewählten Packages gehören. Der Umgang mit dieser Referenzdokumentation sollte immer zu den ersten Übungen für Java-Einsteiger gehören!

0
@WhiteGandalf

Ok vielen Dank ich probiers aus! Danke für die Hilfe und die vielen Antworten auf meine dummen fragen :D!

0

mach es doch über ne rectangle und das mit den hindernissen über die collied funktion in der rectangle, is viel besser!

das klappt dann nicht ganz mit dem restlichen Quelltext

0

Was möchtest Du wissen?