problem mit der maus in BlueJ

teslar

Aktives Mitglied
also hallo erstmal,
hab vor einiger Zeit angefangen mit Java zu Programmieren,
nun stellt sich aber das Problemdas er mir folgendes in der Fehlerkonsole anzeigt:
Code:
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at sum.komponenten.Knopf.knopfGeklickt(Knopf.java:184)
	at sum.komponenten.Knopf$KnopfReaktor.actionPerformed(Knopf.java:26)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6289)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6054)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4652)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4482)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4482)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
	at java.awt.EventQueue.access$000(EventQueue.java:85)
	at java.awt.EventQueue$1.run(EventQueue.java:603)
	at java.awt.EventQueue$1.run(EventQueue.java:601)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$2.run(EventQueue.java:617)
	at java.awt.EventQueue$2.run(EventQueue.java:615)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.NullPointerException
	at SuMAnwendung.Bauen(SuMAnwendung.java:68)
	... 42 more

das taucht auf, wenn ich auf den erstellten button klicke
hier noch das programm:

Code:
/**
 * Die Klasse SuMAnwendung wurde automatisch erstellt: 
 * 
 * @author 
 * @version 28.5.2011
 */

import sum.komponenten.*;
import sum.werkzeuge.*;
import sum.ereignis.*;
import sum.kern.Maus;

public class SuMAnwendung extends EBAnwendung
{
    // Objekte
    private Etikett towername;
    private Etikett Tattack;
    private Etikett Tdefens;
    private Knopf hatKnopf1;
    private Stift hatStift;
    private Maus hatMaus;
    //private Stift bau;
    double x;
    double y;
    int z;

    // Attribute

    /**
     * Konstruktor
     */
        public SuMAnwendung()
        {   //Initialisierung der Oberklasse
            super(811, 672);
    
            hatStift = new Stift();
            //bau = new Stift();
            //hatMaus = new Maus();
         
           towername = new Etikett(656, 55, 100, 25, "TowerName");
            // Ausrichtung
           towername.setzeAusrichtung(Ausrichtung.LINKS);
            Tattack = new Etikett(608, 143, 100, 25, "Tattack");
            // Ausrichtung
            Tattack.setzeAusrichtung(Ausrichtung.LINKS);
            Tdefens = new Etikett(708, 143, 100, 25, "Tdefens");
            // Ausrichtung
            Tdefens.setzeAusrichtung(Ausrichtung.LINKS);
            hatKnopf1 = new Knopf(631, 276, 100, 25, "Bauen");
            hatKnopf1.setzeBearbeiterGeklickt("Bauen");
            hatStift.bewegeBis(575,0);
            hatStift.runter();
            hatStift.bewegeBis(575,hatBildschirm.hoehe());
            hatStift.hoch();
            
        }
    
    /**
     * Vorher: Ereignis GeklicktvonhatKnopf1 fand statt.
     * Nachher: (schreiben Sie, was in dieser Methode ausgefuehrt wird)
     */
        public void Bauen()
        {  
            
            
          
            
            if(hatMaus.istGedrueckt()==false||x==100000)
            {
                
                
                hatStift.bewegeBis(hatMaus.hPosition(),hatMaus.vPosition());
                this.Bauen();
                x=x+0.1;
                
            }else
            {
                                hatStift.zeichneRechteck(50,50);
            }
           
            
        }
        
       // public 
    }
einige sachen sind zwar unnötig, wollte jetz aber nix rauslöschen^^
danke im vorraus
/edit: BlueJ gibt allerdings an, das keine Syntaxfehler vorhanden sind
 
weil das sicherlich noch oft auftreten wird: bei InvocationTargetException unbedingt die letzten Zeilen betrachten
Code:
Caused by: java.lang.NullPointerException
	at SuMAnwendung.Bauen(SuMAnwendung.java:68)
wenn du das schon selber nicht verstehst, dann wenigstens im Forum etwas prominenter präsentieren 😉
 
also ich hab jetz den fehler mit dem auskommentieren behoben,
es kommen aber immernoch fehler:
Code:
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at sum.komponenten.Knopf.knopfGeklickt(Knopf.java:184)
	at sum.komponenten.Knopf$KnopfReaktor.actionPerformed(Knopf.java:26)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6289)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6054)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4652)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4482)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4482)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
	at java.awt.EventQueue.access$000(EventQueue.java:85)
	at java.awt.EventQueue$1.run(EventQueue.java:603)
	at java.awt.EventQueue$1.run(EventQueue.java:601)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$2.run(EventQueue.java:617)
	at java.awt.EventQueue$2.run(EventQueue.java:615)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.NullPointerException
	at sum.kern.Warnung.<init>(Warnung.java:30)
	at sum.kern.Maus.istGedrueckt(Maus.java:91)
	at SuMAnwendung.Bauen(SuMAnwendung.java:68)
	... 42 more
 
Such doch einfach mit dem Debugger danach wo die
Code:
Caused by: java.lang.NullPointerException
	at sum.kern.Warnung.<init>(Warnung.java:30)

auftritt - durchsteppen und sehen wo es knallt - genau dort wird eine deiner nicht initialisierten Variablen verwendet.
Dummerweise wird die Zeilennummer nicht ausgegeben, aber wie gesagt - Durchsteppen und es dauert höchstens 10 Minuten bis du weisst wo es knallt.
 
ohne speziell Andi_CH widersprechen zu wollen 😉 :
der Fehler ist in der Methode Maus.istGedrueckt() und davon gibts keinen Quellcode oder hat den wer doch?
tja, wenn solche Fehler auftreten und man niemanden dazu befragen kann, dann ungünstige Bibliothek..

vielleicht an funktionierende Lehrbuch-Beispiele halten?

google scheint nicht mehr zu liefern als ein ähnliches Thema kürzlich hier ohne Antwort
http://www.java-forum.org/java-basi...kern-maus-gibt-null-obwohl-initialisiert.html
 
Ich war nur zu faul den Debugger zu starten - ich gebs ja zu 🙂
(Musste eben selbst eine NPE suchen, aber die hat sich durch einen Neustart verflüchtigt 🙂 )
 
ich kaper das nich also was is jetz mien fehler,
ich hab dieses sum.kern.Warnung nich erstellt, das muss dann ja irgentwo in dem kram sein, den ich mir
runtergeladen hab
und die funktion istGedrückt ist in der Bibliotek vorhanden-.-
 
ich wage mal eine kühne Vermutung:
bei den Beispielen die ich gestern angeschaut hatte wurde die Maus immer nur direkt verwendet, nicht in späteren Listenern,
vielleicht solltest du in Bauen() ein neues Maus-Objekt anlegen? Methoden übrigens klein schreiben

kann für Stift dann genauso gelten
 
Der Fehler liegt in der Bibliothek SuM. Den Source hat hier offensichtlich niemand und ich glaube selbst wenn, will das hier niemand fixen (ich halte eh nichts von BlueJ und SuM). Ist sicherlich blöd jz für dich, aber du kannst da anscheinend nichts dagegen machen.
 
Ich habe mal den Code dekompiliert. Also ich habe die starke Vermutung, dass die Klasse Maus nicht dazu gedacht ist, in Anwendungen, die von EBAnwendung erben verwendet zu werden.

Die Klasse Maus benutzt die Klasse Hauptfenster.

Die Klasse EBAnwendung hat eigene Methoden um auf Mausereignise zu reagieren.

Btw. Ich verstehe auch nicht so genau, wozu man dieses BlueJ und SuM Zeug braucht, und was daran jetzt einfach sein soll.
 
Btw. Ich verstehe auch nicht so genau, wozu man dieses BlueJ und SuM Zeug braucht, und was daran jetzt einfach sein soll.

um die leute zu verblöden. Beides wird man in einem Betrieb nicht einsetzen und BlueJ liefert zudem noch ein falsches Bild von Java. Imho steigen neulinge viel zu schnell in den GUI-Bereich ein und wenn soetwas wie Greenfoot dazu kommt explodiert das ego 🙂D). Später heist es dann: Entwickle eine Anwendung mit Swing und dann bekommen sie nicht mal das Programm gestarted, weil sie mit der Meldung "main-Methode nicht gefunden" nichts anfangen können.
 
1. ich muss sum machen weil ich noch schüler bin und es im lehrplan steht,
hatte noch keine zeit, um ohne sum und ohne bluej waws zu machen,
2. mit mein methode nicht gefunden kann ich etwas anfangen"."
 

Zurück
Oben