GUI mit mehreren .java-Dateien

tobiaft

Mitglied
Hallo!

Ich möchte eine GUI mit Swing erstellen. In der Klasse, in der sich auch die main-Methode befindet, soll mit GridBagLayout ein 3x3-Raster erstellt werden. Jedes Feld des Rasters (= JPanel) würde ich zwecks Übersichtlichkeit gerne in eine individuelle .java-Datei auslagern. Darin soll der Inhalt der einzelnen Raster-Felder definiert werden

Wie kann ich von den .java-Klassen auf die Oberklasse zugreifen bzw. wie designed "man" ein solches Problem am besten? Alles in einer einzigen Datei wäre schon OK, nur will ich ungern eine Datei mit Hunderten Zeilen von Code.

Hat der "Model-View-Controller" etwas mit meinem Problem zu tun?


Danke...Tobias :confused:
 
Zuletzt bearbeitet:
D.h., die Methoden sollen in der Oberklasse stehen, und von Panel1.java wird die Methode der Oberklasse aufgerufen?
 
Zugreifen kannst du, wenn du das Obejekt der Oberklasse als Parameter in den Konstruktor der Unterklasse übergibst.
Du hast also eine Oberklasse und meinetwegen eine Unterklasse.
In der Oberklasse erstellst du das Layout.
Die Unterklasse erbt von JPanel.

Jetzt kannst du 9mal aus der Oberklasse deine Unterklasse aufrufen, meinetwegen so:
Code:
 Unterklasse Unterobjekt1 = new Unterklasse(this, 1, 2);
Das steht im Konstruktor der Oberklasse, den du über eine Main-Methode aufrufst.
this is das derzeitige Objekt der Oberklasse. Es wird an die Unterklasse übergeben. Der Konstruktor von der Unterklasse könnte so aussehen:
Code:
class Unterklasse extends JPanel {
  public Unterklasse(Oberklasse einOberobjekt, int breite, int hoehe) {
  super();
  //irgendwas
  }
  }

Kann man was damit anfangen?
 
Danke, das war schon mal ein 1. brauchbarer Hinweis!

Jetzt: wenn ich die ein Objekt der Unterklasse im Konstruktor der Oberklasse erzeuge
Code:
Panel1 panel1 = new Panel1();
, bekomme ich folgende Fehlermeldung:

java.lang.StackOverflowError
Exception in thread "main" java.lang.StackOverflowError
Exception in thread "main"


Wenn ich das Unterklassen-Objekt hingegen in der main-Methode aufrufe, funktioniert es. Warum?

Unterklasse:
Code:
package gui;
import javax.swing.*;

class Panel1 extends ECMSGUI {

	public Panel1() {
		
		addComponent(mainFrame, new JButton("11"), 1, 0, 1, 1, 1.0, 1.0);
		System.out.println("Funktioniert!");
	}
}

ECMSGUI ist die Oberklasse, Panel1 die Unterklasse.

"Funktioniert!" wird in der Konsole angezeigt, der Button mittels der Methode addComponent wird leider nicht erzeugt?
 
Denk mal du hast da ne Endlosschleife kreiiert.

solltest nich von deiner Oberklasse erben, sondern nur von JPanel.
Dadurch wird die Klasse aufgerufen, der die Klasse aufruft. Endlosschleife halt.
Glaub ich.
 
Zurück