Eine kontrollierende Klasse (JFrame) ?

mkoeni1

Erfahrenes Mitglied
Hallo Community,

ich habe folgendes Hindernis zu lösen. Auf dem Weg (ohne kontrollierende Klasse) bekomme ich es hin, habe aber dort nur erschwert die Möglichkeit andere Container (JPanels) zu integrieren, da ich eben nicht zentral organisiert bin.

Ich versuche mit einer Klasse die ein JFrame erzeugt, verschiedene JPanels nacheinander (?) zu laden. Die Schwierigkeit die sich mir hier bietet ist die, dass ich nicht weiß wann ein JPanel zu Ende ist und wann das nächte geladen werden sollte (kein return Wert).

Die root-Klasse App(). Aus dieser Klasse versuche ich alle Panels zu steuern und zu kontrollieren:
Code:
/*
 * Created on 28. März 2007, 15:36
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package model;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.LayoutManager;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import view.LoginTo;
import view.Willkommen;
import view.Auswahl;

/**
 *
 * @author Matthias
 */
public class App {
    // private Willkommen welcome  = null;
    
    /** Creates a new instance of App() */
    public App() {
         super();   
    }
    
    public static void main(String[] args){
        App newapp = new App();
        
        JFrame frame = new JFrame("Rahmen");
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
        frame.setSize(800, 600); // Größe des "Client""
        frame.setLocationRelativeTo(null); // Positionieren des Client auf dem Bildschirm
        frame.setResizable(false);
        frame.setLayout(new BorderLayout());
        frame.setVisible(true);
        
        // 1. Komponenten auf das Frame  laden 
        frame.add(new Willkommen(true), BorderLayout.CENTER);
        
        /* -> hier müsste das Ende des oberen JPanels bekannt sein um es zu deleten,    und um das nächste JPanel zu laden */
       
       // 2. Komponenten auf das Frame  laden 
        frame.add(new Auswahl(), BorderLayout.CENTER);


       // 3. Komponenten auf das Frame  laden 
        frame.add(new Fehlermeldung(), BorderLayout.CENTER);
          
        
        
    }
    
}
Mit einer boolean Variable state an die Klasse Willkommen() anzuhängen. Eventuell kann ich so den Verlauf steuern ? Das Problem denke ich ist, das ich von einer Klasse keinen return wert bekomme. Ich müsste also parallel eine Methode aufrufen die das Ende signalisiert. Entweder parallel eine Methode aufrufen oder im Konstruktor-Aufruf die state variable mitübergeben.

Hat jmd. eine Lösung für dieses Problem ?

Danke und Gruß
m
 
Moin!
Verstehe zwar nicht so ganz, was du mit "wann ein JPanel zu ende ist und es nacheinander zu laden" meinst, aber vielleicht hilft es dir ja bei deinem Problem schon, wenn ich dir sage
das man generell nicht direkt einem JFrame etwas hinzufügen sollte, sondern dessen ContentPane:
Code:
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(new Willkommen(true), BorderLayout.CENTER);

Falls das nicht hilft, vielleicht nochmal genauer beschreiben, was du denn tun willst...

*gruessle*
MeinerEiner
 
Hi,

ich meine damit die sequentielle Abarbeitung eines Programms an einer zentralen Stelle (sprich im Frame).
in PHP habe ich eine zentrale Stelle (index.php) von der ich alle relevanten Funktionen aufrufe und aber nach Abarbeitung wieder zurückkehre:

so ähnlich etwa
PHP:
if($id == start){
  start($foo, $bar);
  footer($end);
}

und ich weiß wo ich bin und kann auf alles bequem reagieren.


Gruß
m

Über den ContentPane wechselt der Frame seinen anzuzeigenden Inhalt, das ist bekannt.
 
Zurück