S
Speed
Gast
Hallo,
in einer größeren Anwendung mit vielen Buttons und Grafik konnte ich erfolgreich kompilieren
aber nach dem Programmstart erhalte ich die Fehlermeldung:
"Exeption in thread "main" javalang.StackOverflowError"
Um hier nicht den gesamten Code abbilden zu müssen reduzierte ich das Programm auf möglichst
wenige Zeilen. Der Fehler entsteht dann, wenn ich in der Klasse "Steuerung"
ein Objekt der Klasse GUI erstelle (siehe Kommentar dort). Da ich in der Funktion main()
schon ein Objekt der Klasse GUI erstellt habe darf ich offenbar dies in der Klasse
"Steuerung" nicht tun. Wie soll ich aber dann von der Klasse "Steuerung" auf eine Methode in der Klasse GUI zugreifen?
Kann mir jemand helfen?
Gruß
Speed
***************************************************
***************************************************
in einer größeren Anwendung mit vielen Buttons und Grafik konnte ich erfolgreich kompilieren
aber nach dem Programmstart erhalte ich die Fehlermeldung:
"Exeption in thread "main" javalang.StackOverflowError"
Um hier nicht den gesamten Code abbilden zu müssen reduzierte ich das Programm auf möglichst
wenige Zeilen. Der Fehler entsteht dann, wenn ich in der Klasse "Steuerung"
ein Objekt der Klasse GUI erstelle (siehe Kommentar dort). Da ich in der Funktion main()
schon ein Objekt der Klasse GUI erstellt habe darf ich offenbar dies in der Klasse
"Steuerung" nicht tun. Wie soll ich aber dann von der Klasse "Steuerung" auf eine Methode in der Klasse GUI zugreifen?
Kann mir jemand helfen?
Gruß
Speed
***************************************************
***************************************************
Code:
public class PGMTest {
static public void main(String[] args) {
GUI gui = new GUI();
}
}
****************************************************
****************************************************
import java.awt.*;
import java.awt.event.*;
public class GUI extends Frame {
private Button butn1;
public GUI() {
setLayout( null );
butn1 = new Button("Button 1");
add( butn1 );
butn1.setBounds( 10, 600, 80, 30 );
Steuerung B1 = new Steuerung(Steuerung.BUTTON1);
butn1.addActionListener(B1);
setSize(1000,600);
show();
}
public void paint(Graphics g) {
super.paint(g);
}
public void test() {
// funktion nur zum testen
}
}
***********************************************
***********************************************
import java.awt.*;
import java.awt.event.*;
class Steuerung implements ActionListener {
static final byte BUTTON1 = 1;
byte id;
public GUI gu;
public Steuerung(byte id) {
this.id = id;
gu = new GUI(); //*** Mit dieser Codezeile entsteht der Fehler ***
}
public void actionPerformed(ActionEvent e) {
switch(id) {
case BUTTON1:
System.out.println("in Button 1");
gu.test(); // **** das klappt dann natürlich auch nicht, ich muß aber auf methoden der klasse
// ** GUI zugreifen.
break;
}
}
}