Position eines Image verändern mithilfe eines Timers

Ich bräuchte mal wieder Hilfe von euch ich bin noch relativ neu in der GUI Programmierung.
Ich habe ein Image und möchte dieses mithilfe eines Timers bewegen. Allerdings bringe ich es einfach nicht richtig hin.
Ich hoffe ihr könnt mir helfen.
 

Anhänge

  • Hier soll die Position verändert werden.JPG
    Hier soll die Position verändert werden.JPG
    42,3 KB · Aufrufe: 39
  • Hier erstelle ich die Grafik.JPG
    Hier erstelle ich die Grafik.JPG
    58,4 KB · Aufrufe: 31
Ein paar Dinge:
  1. Du brauchst keine Screenshots vom Code zu machen, den kannst Du hier direkt reinkopieren, indem Du ihn zwischen Code-Tags setzt: [code=Java]Dein Code[/code] - das erhöht auch die Wahrscheinlichkeit, dass ihn sich jemand ansieht.
  2. Typbezeichner (Klassennamen etc.) schreibt man in Java in UpperCamelCase, von Methoden, Parametern, Variablen in lowerCamelCase.
  3. Das Design der Anwendung ist schlecht (hast Du das zufällig aus einem Youtube-Tutorial?) Sorg dafür, dass Dein Programm ohne "static" auskommt - mit Ausnahme der main-Methode.
  4. Trenne Logik und UI. Du kannst den Kern des Spiels völlig ohne UI-Klassen schreiben. Die Oberfläche setzt Du dann einfach darüber.
 
hast Du das zufällig aus einem Youtube-Tutorial?
Das wird so stimmen 😉 Diesen Style habe ich schon öfters mal gesehen:
Var. Variable. Variablen. V., da gibt es sicher ein paar mehr. Und ich habe das Gefühl, die stammen alle aus einer Quelle, weil eben der Code vom "Tutorial" zu "Tutorial" beinahe an jeder Stelle gleich ist. Diese Pest verbreitet sich wie Lauffeuer und auch hier sieht man es hin und wieder mal, wie eben gerade auch.

@Tim Oberdammer
Vergiss dieses Tutorial, das ist einfach nur Mist! Schnappe dir ein oder zwei gute Bücher und arbeite dich durch die Grundlagen durch. Das wird wesentlich effektiver sein, als das, was du gerade machst.
 
Das bestätigt im übrigen meine Vermutung, die ich schon in deinem anderen Thread hatte. Du fängst, so scheint es zumindest, den Code mehr oder minder wild zu kopieren, ohne wirklich zu wissen was er eigentlich tut.
Abgesehen von den anderen Vorschlägen oben, sich ein anderes Tutorial zu suchen, solltest du wirklich erst die Grundlagen lernen. Dazu gehört zB, dass man eben nicht versucht eine Methode in einer anderen Methode zu überschreiben.
(nicht böse gemeint sondern eher als gut gemeinter Rat)
 
1.) Meine Bücher sind bereits bestellt die kommen allerdings erst in ein paar Tagen.
2.) Bis dorthin wollte ich einfach selber ein bisschen etwas ausprobieren.
3.) Der Code ist nicht aus irgendwelchen Tutorial von Youtube da ich davon selbst nichts halte der Code ist von Java Online Seiten allerdings verstehe ich im Gegensatz zu eurer Meinung sehr wohl was hierbei passiert jedoch kenne ich einfach die Befehle nicht und bräuchte deshalb Hilfe.
4.) Wenn mir noch jemand bei meinen Problem ein Image zu bewegen helfen könnte wäre ich ihm sehr dankbar.
Mit Freundlichen Grüßen Tim
 
Also das grundsätzlich solltest du "Zeichnen" und "Bewegen" als 2 verschiedene Sache betrachten. Das "Zeichen" hast du bereits gelernt, nämlich in der paintComponent(Graphics) Methode. Jetzt darfst du das Bild nicht immer an gleicher Position zeichen - also führst du 2 Variablen (zB x,y) für das Bild ein, welche die aktuelle Position des Bildes beschreiben. [hast du bereits]
Diese Variablen (oder nur eine von beiden (?) ) müssen im Timer jeweils inkrementiert (hochgezählt) werden. Nach dem hochzählen rufst du auf der Komponente, wo die Bilder gezeichnet werden, die repaint() Methode auf, damit die Bilder erneut, an der aktualisierten Koordinate, gezeichnet werden.

Wenn du es ganz gut machen willst, packst du das Bild und die Koordinaten in eine eigene Klasse ... dann brauchst du diese komische Var Klasse nicht mehr. static Variablen solltest du sowieso kaum bis nie (gerade am Anfang) benutzen .. das braucht man zu 99% nicht und zeugt von schlechtem Design. static hat eben nichts mit OOP zu tun .. und Java ist nun mal OOP.
 
@Tim Oberdammer zu Deinen Punkten:
1. Gut.
2. OK
3. Warum ich die Frage nach den YouTube-Tutorials gestellt habe, hat @Javinner ja schon erklärt. Wo auch immer Du den Code her hast: ab in die Tonne.

allerdings verstehe ich im Gegensatz zu eurer Meinung sehr wohl was hierbei passiert
Der Versuch, eine Methode in einer anderen Methode einer anderen Klasse zu überschreiben oder die Tatsache, außerhalb des EDT Veränderungen am UI vornehmen zu wollen, sprechen jetzt nicht gerade dafür.

4. Hat @Robat schon beantwortet.
 

Zurück
Oben