Java JPanel einem JFrame adden

PEASANT KING

Commander
Registriert
Okt. 2008
Beiträge
2.412
Hallo liebe Java Freunde,

eine ganz simple Sache möchte bei mir nicht funktionieren.
Ich programmiere eine Light Weight Kundenverwaltung basierend auf einer Java Embedded DB soweit so gut.
Die Applikation besteht aus einer Main Class die nur eine neue Instanz von JFrame erzeugt.
Dann gibt es zwei JPanel Klassen und eine Steuerungsklasse.
In der Steuerungsklasse befinden sich alle Methoden die für die Steuerung der GUI verwantwortlich sind.
Jetzt möchte ich ganz simpel bei einem Button Klick eins der Panel auf das Frame adden.
Es funktioniert allerdings nicht.

Hier mal ein Codeauschnitt:

JFrame Klasse:
Code:
//Konstruktor der Klasse
public ApplicationView() {
     initComponents();
     setLocationRelativeTo(null);
     app.new ApplicationHandler(this);
}

//Button Event zum adden der SystemSettings Panel aufs JFrame
private void systemSettingsActionPerformed(java.awt.event.ActionEvent evt) {
     app.showSystemSettings();
}
GUI Handler Klasse
Code:
private final ApplicationView view;

public ApplicationHandler(ApplicationView view) {
     this.view = view;
}

public void showSystemSettings() {
     view.add(new SettingsView());
     view.repaint();
     view.validate();
}

Was mache ich falsch ? Hat Jemand eine Idee ?
 
Probiere mal

Code:
view.add(new SettingsView());
view.revalidate();
view.repaint();

Der Handler wird aber schon ausgelöst?
 
"Es funktioniert allerdings nicht" ist keine Fehlerbeschreibung. Sag doch was stattdessen passiert, was du beobachtet hast, schon mal nen Breakpoint irgendwo gesetzt um dann Schrittweise die Ausführung zu beobachten, mit Sysouts geschaut, welcher Code durchlaufen wird...?

Ist viel zu wenig Code um zu ihn selbst laufen zu lassen. Und woher sollen wir wissen, ob "systemSettingsActionPerformed" überhaupt mal aufgerufen wird? Vor allem als private-Methode scheint sie ja nicht Teil einer Listener-Implementierung zu sein...


Und das neuzeichnen nach dem Hinzufügen sollte eigentlich nicht notwendig sein...
 
Ja der Event löst aus keine Sorge es ist ja noch mehr in der GUI Handler Klasse drin.

systemSettingsActionPerformed wird aufgerufen, bei einem Button in meiner Menüleiste der GUI.

Code:
systemSettings.addActionListener(new java.awt.event.ActionListener() {
     public void actionPerformed(java.awt.event.ActionEvent evt) {
          systemSettingsActionPerformed(evt);
     }
});
ist in der ApplicationView Class vorhanden um deine Frage zu beantworten @ 1668mib

SystemSettings ist der Button bzw das JMenuItem.
 
Zuletzt bearbeitet:
Und hast du schon überprüft, ob du in "showSystemSettings" jemals "ankommst"?
 
Natürlich, denn wenn ich in showSystemSettings eine Methode ich ich ja selber geschrieben habe ein System.out.println(); setze wird mir in der Console das out.println() ausgegeben.
 
Heißt die Zeile wirklich so
"app.new ApplicationHandler(this);"
und nicht so
"app = new ApplicationHandler(this);" ?
 
Sorry Tippfehler, sie heißt natürlich app = new ApplicationHandler(this);

Kann es vielleicht sein, das die Applikation erwartet wo er das Panel ins Frame setzen soll ?
Da ich ein fauler Mensch bin und schon immer mit Netbeans gearbeitet habe, habe ich die GUI Klassen mit dem GUI Builder zusammen gebaut.

Ich kann auch gerne noch mehr Code zukommen lassen.
 
Zuletzt bearbeitet:
Hab ich mir schon gedacht, da ich den GUI Builder benutze Freies Layout, das dürfte ja dann nicht funktionieren.
Hat sich erledigt, lag am Layout Manager danke 1668mib für den Tipp.
 
Zuletzt bearbeitet:
Zurück
Oben