Strukturfrage: Navigation und Content ähnlich wie HP

Status
Nicht offen für weitere Antworten.

Igäl

Mitglied
Hi Leute

Ich habe eine kleine Frage zur optimalen Strukturierung meines Programmes.

Da ich in den letzten Jahren hauptsächlich PHP programmiert habe, kenne ich hauptsächlich folgenden Vorgang:
Klick auf Navigation --> im Hauptfenster passiert etwas,
Erneuter Klick auf Navi --> im Hauptfenster passiert etwas anderes.

Theoretisch möchte ich das eigentlich so lassen. Sprich, ich möchte mein Programm so gestalten, dass ich zwei JPanels habe, wobei das eine (topPane) die Navigation in der obersten Zeile beinhaltet und das andere (midPane) den Rest vom Fenster darunter.
Beim Klick auf einen Button in der Navigation soll nun der gewünschte Inhalt im midPane angezeigt werden.

Nun habe ich einige Fragezeichen, wie ich mein Programm strukturieren soll, das heisst: Wo soll was aufgerufen werden.

In einem ersten Ansatz habe ich eine Klasse die nur die public static void main() Methode beinhaltet und da eine Content-Manager Klasse aufruft. In dieser Klasse wird der ActionHandler initialisiert, ein JFrame geöffnet, die Panels angelegt, die Buttons den Panels hinzugefügt und die ActionListeners zugewiesen.

In der Methode actionPerformed() wird dann mit if() {}else if() {} herausgefunden, welcher Button angeklickt wurde. Je nachdem welcher Button angeklickt wurde, soll dann eine andere Klasse geladen werden, welche dem midPane einen anderen Inhalt übergibt.

1. Wie findet Ihr diesen Ansatz?
2. Wie kriege ich das hin, dass der Inhalt der neuen Klasse in das selbe JFrame geladen wird? Bis anhin ging mir immer ein neues Fenster auf.

Gruss Igäl
 

Igäl

Mitglied
Wie ich das ganze physisch anordne ist mir klar. Meine Frage bezieht sich jetzt mehr auf die Logik. Wo soll was aufgerufen werden, welche Klassen lagert man besser aus, usw.
 

Bjoern2

Mitglied
Mach dir pro Maske eine Klasse, welche von JPanel erbt, für die Inhalte.
Zusätzlich machst du eine weitere Klasse, die von JPanel und ActionListener erbt, für die Navi.
Wenn ein Button geklickt wird, wird in MainPanel die Methode setContentPanel() aufgerufen, welche den Inhalt dann ändert.


So z.B.:
Code:
class MainPanel()
{

    private JPanel navi;
    private JPanel content;


    [...]


    public void setContentPanel(JPanel panel)
    {
        [...]
    }

}
 

Igäl

Mitglied
Das heisst also:
- Hauptklasse (mit public static void main) ruft MainPanel() auf
- MainPanel ruft eine Klasse auf, welche die Navigation aufbereitet (Rückgabewert: z.B. topPanel)
- MainPanel ruft eine Klasse auf, die den Inhalt einer bestimmten Seite aufbereitet (Rückgabewert: z.B. midPanel)
- Panels werden zusammengesetzt und über das JFrame ausgegeben

Jetzt bleibt die Frage: Wie kommuniziert die Navigation mit dem Inhalt? Soll ich der Klasse MainPanel über actionPerformed zurückgeben lassen, welcher Button angeklickt wurde und dann in MainPanel abhängig von dieser Rückgabe mal die eine, mal die andere Klasse laden?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben