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".
Im Konstruktor von Steuerung wird nun u. a. auch ein Objekt von der Oberflächenklasse "Gui" erstellt.
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.)
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
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