OOP Endlose Erstellung eines Objekts

java-frage

Mitglied
Hallo,
ich bin Schüler und an einer Hausaufgabe stehe ich vor einem Problem, für das ich auch nach Googeln keine Lösung finde.
Das Programm "Start" mit der main-Methode erstellt ein Objekt von "Steuerung".

Java:
public class start {
  
  public static void main(String[] args) {
    Steuerung ste1 = new Steuerung();
  } // end of main
  
} // end of class start

Im Konstruktor von Steuerung wird nun u. a. auch ein Objekt von der Oberflächenklasse "Gui" erstellt.

Java:
public class Steuerung {
  
  // Anfang Attribute
  
  //Referenzattribute
  private Gui meineGui;
  private Fussgaengerampel fga;
  private Autoampel aa;
  // Ende Attribute
  
  //Kontruktor
  public Steuerung() {
    this.meineGui = new Gui("Ampel");
    this.fga = new Fussgaengerampel();
    this.aa = new Autoampel();
    meineGui.setAmpelVisible(false, "a", "rot");
  }
  // Anfang Methoden
  
  // Ende Methoden
} // end of Steuerung

In der Klasse "Gui" ist dann eben das ganze weitere an Komponenten usw. (also ziemlich viel Code, aber eher nicht von Bedeutung nehme ich an.)

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;


public class Gui extends JFrame {
  // Anfang Attribute
  private JPanel jPanel1 = new JPanel(null, true);
  private JPanel jPanel13 = new JPanel(null, true);
  private JPanel frot1 = new JPanel(null, true);
  private JPanel fgruen1 = new JPanel(null, true);
  private JPanel frot2 = new JPanel(null, true);
  private JPanel fgruen2 = new JPanel(null, true);
  private JPanel arot1 = new JPanel(null, true);
  private JPanel agelb1 = new JPanel(null, true);
  private JPanel agruen1 = new JPanel(null, true);
  private JPanel arot2 = new JPanel(null, true);
  private JPanel agelb2 = new JPanel(null, true);
  private JPanel agruen2 = new JPanel(null, true);
  private JPanel jPanel14 = new JPanel(null, true);
  private JButton jButton1 = new JButton();
  private JButton jButton2 = new JButton();
  private JButton jButton3 = new JButton();
  private JButton jButton4 = new JButton();
  //Referenzattribute
  //private Steuerung ste;
  // Ende Attribute
  
  public Gui(String title) { 
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 500; 
    int frameHeight = 500;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setResizable(false);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten
    
    cp.setBackground(Color.BLACK);
    jPanel1.setBounds(0, 165, 500, 125);
    jPanel1.setOpaque(true);
    jPanel1.setBackground(Color.GRAY);
    cp.add(jPanel1);
    frot1.setBounds(225, 60, 25, 25);
    frot1.setOpaque(true);
    frot1.setBackground(Color.RED);
    cp.add(frot1);
    fgruen1.setBounds(225, 95, 25, 25);
    fgruen1.setOpaque(true);
    fgruen1.setBackground(Color.GREEN);
    cp.add(fgruen1);
    frot2.setBounds(350, 330, 25, 25);
    frot2.setOpaque(true);
    frot2.setBackground(Color.RED);
    cp.add(frot2);
    fgruen2.setBounds(350, 365, 25, 25);
    fgruen2.setOpaque(true);
    fgruen2.setBackground(Color.GREEN);
    cp.add(fgruen2);
    arot1.setBounds(370, 120, 33, 33);
    arot1.setOpaque(true);
    arot1.setBackground(Color.RED);
    cp.add(arot1);
    agelb1.setBounds(418, 120, 33, 33);
    agelb1.setOpaque(true);
    agelb1.setBackground(Color.YELLOW);
    cp.add(agelb1);
    agruen1.setBounds(464, 120, 33, 33);
    agruen1.setOpaque(true);
    agruen1.setBackground(Color.GREEN);
    cp.add(agruen1);
    arot2.setBounds(160, 304, 33, 33);
    arot2.setOpaque(true);
    arot2.setBackground(Color.RED);
    arot2.setEnabled(true);
    arot2.setVisible(true);
    cp.add(arot2);
    agelb2.setBounds(112, 304, 33, 33);
    agelb2.setOpaque(true);
    agelb2.setBackground(Color.YELLOW);
    cp.add(agelb2);
    agruen2.setBounds(64, 304, 33, 33);
    agruen2.setOpaque(true);
    agruen2.setBackground(Color.GREEN);
    cp.add(agruen2);
    jPanel13.setBounds(340, 0, 9, 125);
    jPanel13.setOpaque(true);
    jPanel13.setBackground(new Color(0xC0C0C0));
    jPanel1.add(jPanel13);
    jPanel14.setBounds(260, 0, 9, 125);
    jPanel14.setOpaque(true);
    jPanel14.setBackground(new Color(0xC0C0C0));
    jPanel1.add(jPanel14);
    jButton1.setBounds(8, 8, 105, 33);
    jButton1.setText("Grünphase");
    jButton1.setMargin(new Insets(2, 2, 2, 2));
    jButton1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton1_ActionPerformed(evt);
      }
    });
    cp.add(jButton1);
    jButton2.setBounds(8, 56, 105, 33);
    jButton2.setText("Gelbphase");
    jButton2.setMargin(new Insets(2, 2, 2, 2));
    jButton2.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton2_ActionPerformed(evt);
      }
    });
    cp.add(jButton2);
    jButton3.setBounds(225, 128, 25, 25);
    jButton3.setText("X");
    jButton3.setMargin(new Insets(2, 2, 2, 2));
    jButton3.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton3_ActionPerformed(evt);
      }
    });
    jButton3.setBackground(new Color(0xC0C0C0));
    cp.add(jButton3);
    jButton4.setBounds(350, 296, 25, 25);
    jButton4.setText("X");
    jButton4.setMargin(new Insets(2, 2, 2, 2));
    jButton4.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton4_ActionPerformed(evt);
      }
    });
    jButton4.setBackground(new Color(0xC0C0C0));
    cp.add(jButton4);
    // Ende Komponenten
    
    setVisible(true);
  } // end of public Gui
  
  // Anfang Methoden
  public void jButton1_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  } // end of jButton1_ActionPerformed
  
  public void jButton2_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  } // end of jButton2_ActionPerformed
  
  public void jButton3_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  } // end of jButton3_ActionPerformed
  
  public void jButton4_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  } // end of jButton4_ActionPerformed
  
  public void setAmpelVisible(boolean status, String f_a, String f) {
    if (f_a=="a") {
      //autoampel
      if (f=="rot") {
        //rot
        this.arot1.setVisible(status);
        this.arot2.setVisible(status);
      } else {
        //gelb/gruen
        if (f=="gruen") {
          //gruen
          this.agruen1.setVisible(status);
          this.agruen2.setVisible(status);
        } else {
          //gelb
          this.agelb1.setVisible(status);
          this.agelb2.setVisible(status);
        }  
      }
    } else {
      //fussgaengerampel
      if (f=="rot") {
        //rot
        this.frot1.setVisible(status);
        this.frot2.setVisible(status);
      } else {
        //gruen
        this.fgruen1.setVisible(status);
        this.fgruen2.setVisible(status);
      }
    }
  }
  // Ende Methoden
  
  public static void main(String[] args) {
    new Gui("Gui");
  } // end of main
  
} // end of class Gui

Die Klassen Fussgaengerampel und Autoampel habe ich hier mal außen vor gelassen, weil das für mich nach einem reinen OOP-Problem aussieht.
Also: Was kann man dagegen machen, dass beim Ausführen unendlich viele Oberflächen auftauchen? Warum werden mehrere Objekte erstellt?
Ich wäre sehr dankbar für Hilfe. Ich komme an dieser Stelle leider absolut nicht weiter.

LG
 

Lars789852

Aktives Mitglied
Hallo,

ich konnte den Fehler aus dem Quellcode nicht rauslesen, aber ich vermute mal, dass irgendein Objekt, das von Steuerung erstellt wird, den Konstruktor von Steuerung erneut aufruft und damit sich selbst auch wieder. Solche Fehler behebt man am besten, indem man im Konstruktor von Steuerung einen Breakpoint setzt und bei jedem Befehl Step-Into wählt und schaut, was da alles aufgerufen wird. Wenn dann irgendwo [c]new Steuerung()[/c] steht, dann hast du eine endlose Schleife.

Als kurzes Beispiel:
Java:
class A {
  B b;
  public A() {
    b = new B();
  }
}
class B {
  A a;
  public B() {
    a = new A();
  }
}
PS: Ich würd dir empfehlen, deutlichere Bezeichner für die Variablen zu verwenden. Ich weiß, dass man sich in selbstgeschriebenem Quellcode meistens problemlos zurecht findet, aber wenn man den Code zwei Wochen liegen lässt, weiß man kaum noch, was man da geschrieben hat ;)
 
Zuletzt bearbeitet:

java-frage

Mitglied
Tatsächlich kommen die Wiederholungen nur zu Stande, wenn das Objekt von Gui erstellt wird. Lässt man es weg, was natürlich nicht die Lösung ist, wird eine Konsolenausgabe im Konstruktor nur einmal ausgeführt. Hast du da zufällig noch eine Idee, was man an der Klasse Gui ändern müsste?

Ich danke dir jedenfalls schon mal sehr!!! :)
 

Lars789852

Aktives Mitglied
Deine Gui Klasse hat noch eine main(), die du aber eigentlich nicht brauchst. In dem gesamten Programm sollte es nur eine Klasse geben, die eine main() besitzt. Aber ich kann mir nicht vorstellen, warum sie sich selbst ständig aufrufen sollte. Aber trotzdem versuch mal, sie weg zu lassen, da die Hauptklasse sowieso die Klasse start sein sollte.
 

njans

Top Contributor
Java:
if (f_a=="a") {
      //autoampel
      if (f=="rot") {
Das wird wohl sehr oft gar nicht funktionieren. Strings vergleicht man mittels equals().
 

java-frage

Mitglied
Ein Problem habe ich da noch. Wenn ich auf einen Button klicke, kommt diese seltsame Fehlermeldung:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Gui.jButton1_ActionPerformed(Gui.java:149)
at Gui$1.actionPerformed(Gui.java:108)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:19
95)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
a:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242
)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
istener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6297)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
at java.awt.Component.processEvent(Component.java:6062)
at java.awt.Container.processEvent(Container.java:2039)
at java.awt.Component.dispatchEventImpl(Component.java:4660)
at java.awt.Container.dispatchEventImpl(Container.java:2097)
at java.awt.Component.dispatchEvent(Component.java:4488)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575
)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)
at java.awt.Container.dispatchEventImpl(Container.java:2083)
at java.awt.Window.dispatchEventImpl(Window.java:2489)
at java.awt.Component.dispatchEvent(Component.java:4488)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:668)
at java.awt.EventQueue.access$400(EventQueue.java:81)
at java.awt.EventQueue$2.run(EventQueue.java:627)
at java.awt.EventQueue$2.run(EventQueue.java:625)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessCo
ntrolContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessCo
ntrolContext.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:641)
at java.awt.EventQueue$3.run(EventQueue.java:639)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessCo
ntrolContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:638)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.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)

Kannst du oder jemand anderes was damit anfangen?
 

java-frage

Mitglied
nein, das war nicht der Aktuelle. Das hier ist er:

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;


public class Gui extends JFrame {
  // Anfang Attribute
  private JPanel jPanel1 = new JPanel(null, true);
  private JPanel jPanel13 = new JPanel(null, true);
  private JPanel frot1 = new JPanel(null, true);
  private JPanel fgruen1 = new JPanel(null, true);
  private JPanel frot2 = new JPanel(null, true);
  private JPanel fgruen2 = new JPanel(null, true);
  private JPanel arot1 = new JPanel(null, true);
  private JPanel agelb1 = new JPanel(null, true);
  private JPanel agruen1 = new JPanel(null, true);
  private JPanel arot2 = new JPanel(null, true);
  private JPanel agelb2 = new JPanel(null, true);
  private JPanel agruen2 = new JPanel(null, true);
  private JPanel jPanel14 = new JPanel(null, true);
  private JButton jButton1 = new JButton();
  private JButton jButton2 = new JButton();
  private JButton jButton3 = new JButton();
  private JButton jButton4 = new JButton();
  //Referenzattribute
  private Steuerung ste1;
  // Ende Attribute
  
  public Gui(String title) { 
    // Frame-Initialisierung
    
    super(title);
    //ste1 = new Steuerung();
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 500; 
    int frameHeight = 500;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setResizable(false);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten
    
    cp.setBackground(Color.BLACK);
    jPanel1.setBounds(0, 165, 500, 125);
    jPanel1.setOpaque(true);
    jPanel1.setBackground(Color.GRAY);
    cp.add(jPanel1);
    frot1.setBounds(225, 60, 25, 25);
    frot1.setOpaque(true);
    frot1.setBackground(Color.RED);
    cp.add(frot1);
    fgruen1.setBounds(225, 95, 25, 25);
    fgruen1.setOpaque(true);
    fgruen1.setBackground(Color.GREEN);
    cp.add(fgruen1);
    frot2.setBounds(350, 330, 25, 25);
    frot2.setOpaque(true);
    frot2.setBackground(Color.RED);
    cp.add(frot2);
    fgruen2.setBounds(350, 365, 25, 25);
    fgruen2.setOpaque(true);
    fgruen2.setBackground(Color.GREEN);
    cp.add(fgruen2);
    arot1.setBounds(370, 120, 33, 33);
    arot1.setOpaque(true);
    arot1.setBackground(Color.RED);
    cp.add(arot1);
    agelb1.setBounds(418, 120, 33, 33);
    agelb1.setOpaque(true);
    agelb1.setBackground(Color.YELLOW);
    cp.add(agelb1);
    agruen1.setBounds(464, 120, 33, 33);
    agruen1.setOpaque(true);
    agruen1.setBackground(Color.GREEN);
    cp.add(agruen1);
    arot2.setBounds(160, 304, 33, 33);
    arot2.setOpaque(true);
    arot2.setBackground(Color.RED);
    arot2.setEnabled(true);
    arot2.setVisible(true);
    cp.add(arot2);
    agelb2.setBounds(112, 304, 33, 33);
    agelb2.setOpaque(true);
    agelb2.setBackground(Color.YELLOW);
    cp.add(agelb2);
    agruen2.setBounds(64, 304, 33, 33);
    agruen2.setOpaque(true);
    agruen2.setBackground(Color.GREEN);
    cp.add(agruen2);
    jPanel13.setBounds(340, 0, 9, 125);
    jPanel13.setOpaque(true);
    jPanel13.setBackground(new Color(0xC0C0C0));
    jPanel1.add(jPanel13);
    jPanel14.setBounds(260, 0, 9, 125);
    jPanel14.setOpaque(true);
    jPanel14.setBackground(new Color(0xC0C0C0));
    jPanel1.add(jPanel14);
    jButton1.setBounds(8, 8, 105, 33);
    jButton1.setText("Gelbphase");
    jButton1.setMargin(new Insets(2, 2, 2, 2));
    jButton1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton1_ActionPerformed(evt);
      }
    });
    cp.add(jButton1);
    jButton2.setBounds(8, 56, 105, 33);
    jButton2.setText("Grünphase");
    jButton2.setMargin(new Insets(2, 2, 2, 2));
    jButton2.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton2_ActionPerformed(evt);
      }
    });
    cp.add(jButton2);
    jButton3.setBounds(225, 128, 25, 25);
    jButton3.setText("X");
    jButton3.setMargin(new Insets(2, 2, 2, 2));
    jButton3.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton3_ActionPerformed(evt);
      }
    });
    jButton3.setBackground(new Color(0xC0C0C0));
    cp.add(jButton3);
    jButton4.setBounds(350, 296, 25, 25);
    jButton4.setText("X");
    jButton4.setMargin(new Insets(2, 2, 2, 2));
    jButton4.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton4_ActionPerformed(evt);
      }
    });
    jButton4.setBackground(new Color(0xC0C0C0));
    cp.add(jButton4);
    // Ende Komponenten
    
    setVisible(true);
  } // end of public Gui
  
  // Anfang Methoden
  public void jButton1_ActionPerformed(ActionEvent evt) {
    //Gelbphase
    ste1.gelbphase();
  } // end of jButton1_ActionPerformed
  
  public void jButton2_ActionPerformed(ActionEvent evt) {
    ste1.autogruen();
  } // end of jButton2_ActionPerformed
  
  public void jButton3_ActionPerformed(ActionEvent evt) {
    ste1.ampelschalter();
  } // end of jButton3_ActionPerformed
  
  public void jButton4_ActionPerformed(ActionEvent evt) {
    ste1.ampelschalter();
  } // end of jButton4_ActionPerformed
  
  public void setAmpelVisible(boolean status, String f_a, String f) {
    if (f_a=="a") {
      //autoampel
      if (f=="rot") {
        //rot
        this.arot1.setVisible(status);
        this.arot2.setVisible(status);
      } else {
        //gelb/gruen
        if (f=="gruen") {
          //gruen
          this.agruen1.setVisible(status);
          this.agruen2.setVisible(status);
        } else {
          //gelb
          this.agelb1.setVisible(status);
          this.agelb2.setVisible(status);
        }  
      }
    } else {
      //fussgaengerampel
      if (f=="rot") {
        //rot
        this.frot1.setVisible(status);
        this.frot2.setVisible(status);
      } else {
        //gruen
        this.fgruen1.setVisible(status);
        this.fgruen2.setVisible(status);
      }
    }
  }
  // Ende Methoden
  
  
  
} // end of class Gui

Java:
public class start {
  
  public static void main(String[] args) {
    Steuerung ste1 = new Steuerung();
  } // end of main
  
} // end of class start

Java:
public class Steuerung {
  
  // Anfang Attribute
  
  //Referenzattribute
  private Gui gui;
  private Fussgaengerampel fga;
  private Autoampel aa;
  // Ende Attribute
  
  //Kontruktor
  public Steuerung() {
    System.out.println("111111111");
    //this.zeitphase();
    //System.out.println("222222222");
    //System.out.println("333333333");
    //this.fga = new Fussgaengerampel();
    //this.aa = new Autoampel();
    this.gui = new Gui("Ampel");
    
    //gui.setAmpelVisible(false, "a", "rot");
  }
  // Anfang Methoden
  public void fussgruen() {
    gui.setAmpelVisible(true, "f", "gruen");
    gui.setAmpelVisible(false, "f", "rot");
    
    gui.setAmpelVisible(true, "a", "rot");
    gui.setAmpelVisible(false, "a", "gelb");
    gui.setAmpelVisible(false, "a", "gruen");
    zeitphase();
  }
  
  public void autogruen() {
    gui.setAmpelVisible(true, "f", "rot");
    gui.setAmpelVisible(false, "f", "gruen");
    
    gui.setAmpelVisible(true, "a", "gruen");
    gui.setAmpelVisible(false, "a", "gelb");
    gui.setAmpelVisible(false, "a", "rot");
    zeitphase();
  }
  
  public void gelbphase() {
    gui.setAmpelVisible(true, "f", "rot");
    gui.setAmpelVisible(false, "f", "gruen");
    
    gui.setAmpelVisible(false, "a", "gruen");
    gui.setAmpelVisible(true, "a", "gelb");
    gui.setAmpelVisible(false, "a", "rot");
    zeitphase();
  }
  
  private void zeitphase() {
    int i = 1000000;
    int j = 1000000;
    int k = 1000000;
    while (!(i==0)) { 
      i--;
      while (!(j==0)) { 
        j--;
        while (!(k==0)) { 
          k--;
        } // end of while
      } // end of while
    } // end of while
  }
  
  public String getZustandAuto() {
    int integer = aa.getZustand();
    if (integer==1) {
      return "rot";
    } else {
      if (integer==2) {
        return "gelb";
      } else {
        return "gruen";
      } // end of if-else
    } // end of if-else
  }
  
  public String getZustandFussgaenger() {
    int integer = fga.getZustand();
    if (integer==1) {
      return "rot";
    } else {
      return "gruen";
    } // end of if-else
  }
  
  public void ampelschalter() {
    gelbphase();
    fussgruen();
    zeitphase();
    autogruen();
  }
}
  // Ende Methoden
 // end of Steuerung

Java:
public class Fussgaengerampel {
  
  // Anfang Attribute
  private Steuerung ste = new Steuerung();
  private int zustand;
  // Ende Attribute
  
  // Anfang Methoden
  private void setZustand(int param) {
    this.zustand = param;
  }
  public void schalten(int farbe) {
    this.setZustand(farbe);
  }
  public int getZustand() {
    return zustand;
  }

  // Ende Methoden

    // Anfang Komponenten
    // Ende Komponenten
} // end of Fussgaengerampel

Java:
public class Autoampel {
  
  // Anfang Attribute
  private Steuerung ste = new Steuerung();
  private int zustand;
  // Ende Attribute
  
  // Anfang Methoden
  private void setZustand(int param) {
    this.zustand = param;
  }
  public void schalten(int farbe) {
    this.setZustand(farbe);
  } 
  public int getZustand() {
    return zustand;
  }

  // Ende Methoden

    // Anfang Komponenten
    // Ende Komponenten
} // end of Autoampel
 

VfL_Freak

Top Contributor
Moin,

Java:
public void jButton1_ActionPerformed(ActionEvent evt) 
{
    //Gelbphase
    ste1.gelbphase();
} // end of jButton1_ActionPerformed
So denn Code und Fehlermeldung wirklich korrelieren, dann ist hier ("ste1" == null), also nicht initialisiert!

BTW: verwende sprechende Variablennamen - glaub' mir: nach einem halben Jahr weißt auch Du nicht mehr, was genau "ste1" eigentlich sein sollte ....

Gruß
Klaus
 

java-frage

Mitglied
Hm, klingt logisch. Aber wenn ich ste1 initiatilisiere ...
Java:
private Steuerung ste1 = new Steuerung();
... dann wird ja wieder ein Objekt von Steuerung erzeugt, welches wieder eins von der Gui erzeugt usw.
---> Endlosschleife

Wie müsste man das denn initialisieren?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Endlose Ladezeit im Browser Java Basics - Anfänger-Themen 3
Voreck Endlose for schleife Java Basics - Anfänger-Themen 5
N JAR das Endlose Thema Java Basics - Anfänger-Themen 2
W Umgang mit Graphics unklar : Erstellung u Uebergabe an Funktion Java Basics - Anfänger-Themen 18
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
M Java Einstellung von Apache POI für MS Word Erstellung mit Eclipse Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
N Erstellung einer Supermarktwarteschlange Java Basics - Anfänger-Themen 10
B Erstellung einer XML Datei Java Basics - Anfänger-Themen 8
C Erstellung einer Währungsrechnungstabelle Java Basics - Anfänger-Themen 2
B Hilfe bei Regex - Erstellung Java Basics - Anfänger-Themen 5
T Collections Erstellung eines Listeneintrags einer verketteten Liste Java Basics - Anfänger-Themen 5
M Erstellung Interfaces....totale Anfängerfrage Java Basics - Anfänger-Themen 16
Moritz1508 Variablen Erstellung eines simplen Taschenrechners mit +/- - Auswahl Java Basics - Anfänger-Themen 2
J Java Ordner Erstellung nicht möglich. Java Basics - Anfänger-Themen 3
N Interface Interface Erstellung Java Basics - Anfänger-Themen 3
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
G Wieviel kostet der Zugriff auf Objektattribute im Vergleich zur Erstellung von vars in Methode? Java Basics - Anfänger-Themen 11
A Zeichentool mit automatischer Java Code Erstellung Java Basics - Anfänger-Themen 1
J Can't find symbol - Erstellung eines Objekts in if-Bedingung Java Basics - Anfänger-Themen 3
M Deklaration und Initialisierung bei Method Erstellung Java Basics - Anfänger-Themen 12
D Klassen Objekte nach erstellung in ArrayList speichern Java Basics - Anfänger-Themen 5
K Javadoc-Erstellung Java Basics - Anfänger-Themen 16
S Klassen Brauche Hilfe bei Erstellung einer Klasse für einen Tachenrechner!!! Java Basics - Anfänger-Themen 6
Luk10 Problematik großer Objekt-Erstellung / -Löschung Java Basics - Anfänger-Themen 2
U Methoden Methode zur Erstellung von Buttons Java Basics - Anfänger-Themen 11
A Probleme mit JAR-Datei-Erstellung unter Eclipse Java Basics - Anfänger-Themen 23
MU5T4NG Getter und Setten bei GUI-Erstellung Java Basics - Anfänger-Themen 13
O Problem bei .jar Erstellung Java Basics - Anfänger-Themen 7
A Erstellung eines einfachen Plugin HILFE ! Java Basics - Anfänger-Themen 19
S [JAVA] Erstellung eines Objekts abbrechen?! Java Basics - Anfänger-Themen 7
K Hilfe zur Erstellung v.kl. Applikation Java Basics - Anfänger-Themen 5
S Problem mit Schleife - Objektwert aendert sich nach erstellung Java Basics - Anfänger-Themen 17
E Erstellung eines Netzwerkfähigen Stundenplans Java Basics - Anfänger-Themen 6
Developer_X Zugriff auf PC verweigert bei Ordner erstellung, wie zulassen?! Java Basics - Anfänger-Themen 3
T Erstellung von Queue mit verkketten listen Java Basics - Anfänger-Themen 3
P Spiel im Schiffe-Versenken Stil, Problem mit Erstellung des zweidimensionalen ARRAYs Java Basics - Anfänger-Themen 7
M Frage zur Erstellung von Methoden Java Basics - Anfänger-Themen 4
F Erstellung eines Fensters mit Button und Textfeldern Java Basics - Anfänger-Themen 10
S Probleme bei der Erstellung von JAR-Dateien Java Basics - Anfänger-Themen 2
R Probleme mit Animation und der erstellung einer jar Datei. Java Basics - Anfänger-Themen 11
G Gui erstellung mit actionlistener Java Basics - Anfänger-Themen 4
J Bei erstellung der Jar Datei werden Bilder nicht geladen Java Basics - Anfänger-Themen 2
S Problem mit Array-Erstellung Java Basics - Anfänger-Themen 5
G Blöde Frage zur Jar-File-Erstellung Java Basics - Anfänger-Themen 5
B Fehler bei ArrayList erstellung? Java Basics - Anfänger-Themen 2
M Frage zu Erstellung von Methode Java Basics - Anfänger-Themen 17
N Hilfe zur Erstellung einer Internet-Plattform Java Basics - Anfänger-Themen 5
M Hilfe bei der Erstellung der Comparator Klasse Java Basics - Anfänger-Themen 10
G Probleme mit *.JAR erstellung Java Basics - Anfänger-Themen 15
G Klassenbibliothek zur Erstellung von Tabellen? Java Basics - Anfänger-Themen 3
G Erstellung von HTML Ausgaben Java Basics - Anfänger-Themen 5
W Problem mit jar erstellung bei einer SWT-Applikation Java Basics - Anfänger-Themen 5
G Binäre Suchbaum + Erstellung des Programmes Java Basics - Anfänger-Themen 4
G Kurze Frage zur Erstellung des Projektplans Java Basics - Anfänger-Themen 7
M Welche UML Werkzeuge für PAP Erstellung gibt es? Java Basics - Anfänger-Themen 3
richis-fragen Ungefähre Restdauer eines Kopiervorgangs ermitteln Java Basics - Anfänger-Themen 3
D Erste Schritte Frage eines absoluten Anfängers Java Basics - Anfänger-Themen 3
R Operatoren Klausurenfrage: Auswertungspräzedenz eines komplizierten Ausdrucks Java Basics - Anfänger-Themen 6
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
walid Öffnungszeiten eines Geschäftes Java Basics - Anfänger-Themen 3
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
B Synchronisation eines kleinen Museums Java Basics - Anfänger-Themen 47
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
Sachinbhatt Was ist die Notwendigkeit eines Sammlungsframeworks in Java? Java Basics - Anfänger-Themen 2
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
M Parse-Tree eines statements darstellen Java Basics - Anfänger-Themen 0
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
M Wie kann die Implementation einer Methode den Wert eines Attributs vermindern? Java Basics - Anfänger-Themen 3
A Rekursive Implementation eines Codes Java Basics - Anfänger-Themen 4
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
M Wie erreiche ich das Vorwärtsgehen eines Roboters? Java Basics - Anfänger-Themen 2
M Wie erreiche ich es das Vorwärtsgehen eines Roboters? Java Basics - Anfänger-Themen 0
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
A Optimierung eines Programms: Mergen der Dateien Java Basics - Anfänger-Themen 23
melisax Alle Möglichkeiten eines Wortes angeben Java Basics - Anfänger-Themen 3
A Java, verarbeitung eines xml-files Java Basics - Anfänger-Themen 2
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
P Drei Zahlen eines Würfelspiels auswerten Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben