mein Frame wird nicht schnell genung aktualisiert

Status
Nicht offen für weitere Antworten.
A

anfänger

Gast
hallo liebe leute,

ich hab hier schon einige interessante threads gelesen, die mir auch schon sehr gehölfen haben, aber jetzt steh ich vor einem neuen problem.

ich lasse mehrer bilder über mein Jpanel laufen und der Benutzer kann wählen in welchen sekundenabständen sich die bilder bewegen sollen. ich hab auch noch eine art uhr eingebaut, die auch beweist, dass die bewegungen alle vier, drei, zwei oder jeder sekunde passieren indem sie sich dann je na wartedauer hochzählt, also je um vier oder drei oder zwei oder einer Sekunde. das ganze funktioniert auch alles prima nur für eine sekunde hab ich plötzlich sprünge von unterschiedlicher größe. Wahrscheinlich liegt es daran, das das panel mit den aktualisierungen nicht nachkommt, da ich durch die bilder eine ziemlich große datenmenge bearbeiten muss.

Kann mir jemadn einen rat geben, wie ich den computer dabei soweit entlasten kann, dass er mir auch die bewegungen in jeder sekunde richtig anzeigen kann?

bin auch für vorschläge dankbar wie ich die großen datenmengen besser bearbeiten kann.
 

Lazarus

Mitglied
hallo pauschal würde ich Sagen, daß der Fehler da liegt daß du nicht mit Pufferung arbeitest. Ich glaube du lädst jedes mal wenn das Bild angezeigt wird es erneut von der Platte quasi. Also jedes mal Bild anfragen, Bild laden, Bild darstellen. Normalerweise werden alle benötigten Bilder einmal geladen, und dann bei Bedarf quasi aus dem Speicher geholt. Dort befinden sich nämlich dann. Hier diese Art der Verbesserung dürfte ausreichend sein. So mit Doppelpufferung denke ich ist überdimensioniert. Den Code hab ich aus einem Tutorial

Code:
 public BufferedImage loadImage(String nombre) {
59        URL url=null;
60        try {
61          url = getClass().getClassLoader().getResource(nombre);
62          return ImageIO.read(url);
63        } catch (Exception e) {
64          System.out.println("No se pudo cargar la imagen " + nombre +" de "+url);
65          System.out.println("El error fue : "+e.getClass().getName()+" "+e.getMessage());
66          System.exit(0);
67          return null;
68        }
69      }// Das ist die Methode um das Bild zu laden.
70      
71      public BufferedImage getSprite(String nombre) {
72        BufferedImage img = (BufferedImage)sprites.get(nombre);//Casting wichtig, da Map vom Typ Object
73        if (img == null) {
74          img = loadImage("res/"+nombre);
75          sprites.put(nombre,img);//public HashMap sprites :arrow: 76        }
77        return img;
78      }// Diese wird aber eigentlich immer aufgerufen. Falls das Bild noch nicht geladen wird wird obige Methde   kaskadiert aufgerufen.

Zu zeile 75 da werden die geladenen Bilder in eine Hash Map gelegt. Das kann man sich so vorstellen wir ein Array von Objekten, wobei der Inhalt also das bild nicht mit indexen wie 0,1,2 usw. verbunden ist sondern mit den namen der Bilder.

so sieht dann der Aufruf aus:
Code:
g.drawImage(getSprite("bicho.gif"), posX, posY,this);

also wird hier erst getSprite aufgerufen um das bild zu erhalten. Wenn noch nicht erhalten wird load Image aufgerufen

Einmal in der Hash Map ist es im Speicher und somit um ein vielfaches schneller als immer neu zu laden.

Tschuu
 
G

Guest

Gast
wird denn die methode loadImage automatisch bei dem Aufruf

g.drawImage(getSprite("bild.gif"),posX,posY,this);

aufgerufen oder muss ich die selber aufrufen? Und muss ich eine URL in der Methode loadImage benutzen, wenn die Bilder alle lokal auf meiner Festplatte liegen?

Wie schaffe ich es denn, dass mein Hintergrundbild nur aktuallisiert wird, wenn ich scrolle und sonst nur die spielfiguren, die über den hintergrund wandern?
 

Lazarus

Mitglied
Hallo

die Load image Methode wird immer nur dann aufgerufen, wenn das Bild noch nicht im Speicher ist.
73 if (img == null) falls image==null wird loadImage aufgerufen, siehst du ja in den Zeilen 74,75

Sonst nicht. Das mit dem Bild akualisieren kann ich so nicht pauschal sagen. Grob kann man sagen, du must Ereignisse auffangen und dann über sie Aktonen auslösen. Dieses Ereignisauffangen ist untersschiedlich. Kannst es machen über Bereiche oder Tasten oder Buttons. Je nachdem . Auf jedenfall musst du für jedes Ereignis wo was passieren soll was programmieren.

Zu Url weiß ich ganz ehrlich nicht musste mal nachscheaen in der Dokumentation, ob eine überladene Version mit einem String oder einem FileObjkt existiert. Ansonsten ist es auch keine schwierigkeit ein FileObjekt in eine URL umzuwandeln. Das mit der URL bietet sich halt einfach an. Die Bilder werden meißt in diesem Verzeichnis entweder direkt oder indirekt in einem Unterordner gespeichert. Somit bist du flexibler und kannst den Code übeall verwenden
url = getClass().getClassLoader().getResource(nombre);
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Mein Frame friert ein beim Uploaden Allgemeine Java-Themen 4
Queenman Interface Mein Microsoft Visual Studio Code zeigt komische Dinge & Menüs an Allgemeine Java-Themen 9
B Wie kann ich mein 8 Klassen Gebilde objektorientierter schreiben? Allgemeine Java-Themen 114
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
Drachenbauer Wie sorge ich dafür, dass mein Spiel die ini-Datei in der Resourcen-ordner des Projektes schreibt? Allgemeine Java-Themen 5
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
M Brainstorming für mein Projekt Allgemeine Java-Themen 30
R Wo ist mein Fehler in der Methode DRINGEND Allgemeine Java-Themen 9
R Wo ist mein Fehler in diesem Code Allgemeine Java-Themen 7
M Suche aktuelle Apache Poi Bibliothek zum Einbinden in mein Programm Allgemeine Java-Themen 2
T log4j2 Wo liegt mein Logfile? Allgemeine Java-Themen 3
Thallius Warum läst mein replace die Klammern drin? Allgemeine Java-Themen 10
O Mein JButton Array funktioniert nicht Allgemeine Java-Themen 3
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
G Mein PDF Projekt mit iText Allgemeine Java-Themen 2
K Was ist mein Fehler? Allgemeine Java-Themen 2
itwestnet Mein Java-Programm läuft nicht in China Allgemeine Java-Themen 4
Thallius App-Sprache in der App ändern. Wo ist mein Denkfehler? Allgemeine Java-Themen 6
M Mein erstes TicTacToe :-) Allgemeine Java-Themen 3
A Applet Mein Applet verursacht Browserabsturz Allgemeine Java-Themen 8
Ollek MVC - Anwendung auf mein Projekt Allgemeine Java-Themen 18
K Wo ist mein Fehler? Allgemeine Java-Themen 21
J Mein eigener Messenger und dessen Probleme Allgemeine Java-Themen 48
C Hilfe! Mein Java mag nich mehr ganz... Allgemeine Java-Themen 11
F VideoIntro für mein Programm Allgemeine Java-Themen 2
A Wie lasse ich mein Programm als Daemon laufen? Allgemeine Java-Themen 4
A Wie liefere ich mein Java-Programm richtig aus? Allgemeine Java-Themen 10
G Entscheidungsproblem für mein Vorhaben, zwischen Java und C# Allgemeine Java-Themen 35
G Wie kann ich in mein Programm eine Updatefunktion einbauen Allgemeine Java-Themen 3
E Wie bekomme ich mein Image in das Fenster Allgemeine Java-Themen 2
V Beratung zum Bestimmen der "Mittel"(Java,Sql) mein Allgemeine Java-Themen 3
S mit welchem befehl kann ich mein programm autom. schließen Allgemeine Java-Themen 3
R Mein Applet läuft in der IDE aber nicht. Allgemeine Java-Themen 2
M Bitte Testen: Mein Multi-File Editor Allgemeine Java-Themen 30
B Fehler:Mein Applet kann nicht auf zwei txt-Dateien zugreifen Allgemeine Java-Themen 2
C Warum wartet mein thread nicht? Allgemeine Java-Themen 2
F Datei auslesen - wo ist mein Fehler? Allgemeine Java-Themen 9
T läuft mein Programm schon? - wie feststellen Allgemeine Java-Themen 6
T Warum mein such-tool schneller als Windows such-tool? Allgemeine Java-Themen 5
A Wie mach ich, das mein Button schneller reagiert. Allgemeine Java-Themen 13
G JFrame nimmt mein Image nicht Allgemeine Java-Themen 2
D Mein Bäumchen Allgemeine Java-Themen 6
G Input Frame Allgemeine Java-Themen 6
Y Wie kann ich ein erstelltes JPanel meinem Frame hinzufügen? Allgemeine Java-Themen 1
MaxG. Swing Frame schließen Allgemeine Java-Themen 9
X Controller pro Frame? Allgemeine Java-Themen 8
A BlueJ Java Frame Java Editor --> Bluej / String title Allgemeine Java-Themen 8
S Bild in Frame Allgemeine Java-Themen 0
T Code durch eigenes Frame pausieren (ähnlich JDialog) Allgemeine Java-Themen 4
D Player Objekt - Frame über Server anzeigen lassen. Allgemeine Java-Themen 3
R Nullpunkt im Frame Allgemeine Java-Themen 4
J Swing Frame schließt ganzes Programm(Jasperreport) Allgemeine Java-Themen 6
J Runtime.exec setzt Fokus auf Frame Allgemeine Java-Themen 2
N Protocol Frame/Applet Allgemeine Java-Themen 4
A Frame nur Anwendungsweit in Vordergrund Allgemeine Java-Themen 2
Z Mit ActionListener in anderem Frame lauschen? Allgemeine Java-Themen 3
M Nochmal I-Frame zu Image Allgemeine Java-Themen 4
borobudur Find a AWT frame in SWT Allgemeine Java-Themen 4
S Von Frame zu Frame Allgemeine Java-Themen 7
D Kreis Rundes Frame Allgemeine Java-Themen 16
E "runder" Frame Allgemeine Java-Themen 9
G Kompletten Frame mit allen Objekten resizen Allgemeine Java-Themen 10
ARadauer mit keylistener hören auch wenn frame nicht den focus hat Allgemeine Java-Themen 2
G HTML-Seite im Frame Anzeige? Allgemeine Java-Themen 3
G Kontrolllampe im Frame Allgemeine Java-Themen 4
C Tastatureingabe in einem Frame abfragen Allgemeine Java-Themen 2
L Spielerei: Frame rekursiv darstellen Allgemeine Java-Themen 3
L Objekt in einem Frame wird im anderen benötigt Allgemeine Java-Themen 5
G Fenster/Frame schließen Allgemeine Java-Themen 16
R Window statt Frame Allgemeine Java-Themen 6
R KeyListener ohne Frame und Applet Allgemeine Java-Themen 7
B Frame schließt sich aber VM bleibt am Leben Allgemeine Java-Themen 3
J Exception-Frame Allgemeine Java-Themen 2
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
G Popup wird nicht sichtbar Allgemeine Java-Themen 9
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Y MVVM wie wird Eventhandler tausch geregelt Allgemeine Java-Themen 4
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
T ImageIcon wird nicht angezeigt Allgemeine Java-Themen 6
N Warum wird die For Schleife nicht betreten Allgemeine Java-Themen 4
N warum wird es doppelt ausgegeben Allgemeine Java-Themen 6
A code wird nicht ausgeführt Allgemeine Java-Themen 3
Y Warum wird das JLabel falsch verschoben? Allgemeine Java-Themen 1
T Schaltfläche wird nicht gefunden Allgemeine Java-Themen 4
N Eingabe wird immer als "false" ausgegeben Allgemeine Java-Themen 6
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
M Frage-Antwortspiel wie Wer wird Millionär Allgemeine Java-Themen 1
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
C FileLock - Exception wird immer geworfen Allgemeine Java-Themen 4
R Was muss ich ändern, damit der Kreis links unten gezeichnet wird? Allgemeine Java-Themen 17
hello_autumn Java_Home geändert auf Java 13, trotzdem wird Java Version 8 angezeigt. Allgemeine Java-Themen 2
Thallius Char +1 wird int? Allgemeine Java-Themen 7
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
F Scrollbar wird nicht angezeigt Allgemeine Java-Themen 0

Ähnliche Java Themen

Neue Themen


Oben