Hey,
ich meinem Thread welcher die "Klicks pro Sekunde" zählt gibt es ein NullPointer Exception. Ich habe eine Idee weshalb es so sein könnte, aber ich wollte hier nochmal nachfragen, da ich sowieso nicht genau wüsste, wie ich den Fehler beheben sollte, wenn ich überhaupt die richtige Idee habe...
Also hier ein Teil der Thread-Klasse:
Java:
@Overridepublicvoidrun(){
cps.setCpsBoolean(false);while(running){try{Thread.sleep(1000);}catch(InterruptedException e){System.err.println("Error while sleeping.");
e.printStackTrace();}if(cps.getClicksPerSecond()>0){
cps.getLblClicksPerSecond().setText("CPS: "+ cps.getClicksPerSecond());if(cps.getClicksPerSecond()< cpsData.getClicks_Per_Second_Max()){//Die Exception verweist auf diese Zeile
cpsData.setClicks_Per_Second_Max(cps.getClicksPerSecond());}
cps.setClicksPerSecond(0);}}
Die Exception lautet:
Exception in thread "Thread-1" java.lang.NullPointerException
at de.m_ver.cookieclicker.threads.CPSThread.run(CPSThread.java:33)
at java.lang.Thread.run(Unknown Source)
Und cps + cpsData sind Zwei Inztanzen einer Klasse, ich vermute dass an cpsData der Fehler liegt, da diese Inztanz nicht aus dem Kontruktor geholt wird, sondern davor:
Database database;//Die Datenbank die ich mir mit cpsData holen willThread cpsThread =newThread(newCPSThread(this, database));//Mein Thread//Der Konstruktor der Klasse aus der ich die Inztanzen hole:publicCookieClickerGUI(){
database =newDatabase(this);//Wird erst in dem Kontruktor aufgerufen, weshalb (glaube ich) Database database; zu dem Zeitpunkt wo ich es brauche (noch) nicht initialisiert ist.}
Initialisiere deinen cpsThread ebenfalls im Konstruktor nach dem database.
Was ist denn Zeile 33 wo die NP fliegt? Nvm. Hab den Kommentar nicht gesehen.
Initialisiere deinen cpsThread ebenfalls im Konstruktor nach dem database.
Was ist denn Zeile 33 wo die NP fliegt? Nvm. Hab den Kommentar nicht gesehen.
Ah, wobie wir schon hier sind (will jetzt nicht einen neuen Thread aufmachen), gibt es eine Möglichkeit bei .png-Images nur das sichtbare "klickbar" zu machen, so dass das, was mit .setOpaque(true); unsichtbar wurde nicht mehr anklickbar wurde?. Hab im Internet nichts dazu finden können. Ich hoffe meine Frage war verständlich, danke!
Ähm ich arbeite mit Swing. Und in entwa so lasse ich ein Bild in einem JLabel anzeigen:
Java:
privateImageIcon imageCookie;privateJLabel lblCookie;publicvoidinitialComponents(){this.imageCookie =newImageIcon("images/CookieClickerCookie.png");this.lblCookie =newJLabel(this.imageCookie);}//Diese Methode ruf ich dann im Kontruktor auf...
Da habe ich leider keine Ahnung.. hatte noch nie mit Swing gearbeitet, ansonste würde ich es aber selbst implementieren und die Clickbereiche berechnen, in dem das Bild tatsächlich liegt. Also Berechnungen über Bildgröße und ImageIcon-Größe durchführen.
Da habe ich leider keine Ahnung.. hatte noch nie mit Swing gearbeitet, ansonste würde ich es aber selbst implementieren und die Clickbereiche berechnen, in dem das Bild tatsächlich liegt. Also Berechnungen über Bildgröße und ImageIcon-Größe durchführen.