Hallo,
ich bin ein Neuling in Java und habe mich bis jetzt durch ein Buch und diverse Tutorials im Internet (u.a. das von Sun) gearbeitet.
Die ganzen "Tutorial Spielereien" wie z.B. zwei Buttons in einem Fenster erstellen und je nach dem welcher geklickt wird ein Textlabel zu ändern habe ich verstanden und kann ich auch implementieren.
Jetzt will ich mich an mein erstes größeres Projekt wagen und habe leider massive Probleme:
Zunächst möchte ich ein "Hauptprogramm-Fenster" öffnen lassen in dem der Nutzer zwischen den zwei Modulen (hier A und B) des Programms wählen kann. Ich habe mir nun überlegt, dass ich das über die ConentPane realisieren könnte (weiß nicht ob das gut und "sauber" ist). Um das ganze schön objektorientiert zu machen will ich die versch. Inhalte der ContentPane in eigene Klassen auslagern.
Mit den Erklärungen ist folgender Code sicher verständlich:
- Das Hauptfenster welches zunächst beim Programmstart geöffnet werden soll.
HauptFenster.java
- Als Beispiel der Inhalt einer ContentPane - hier die des Hauptfensters
DefaultCP.java
Im Hauptprogramm wird halt eine Instanz von Hauptfenster angelegt, das ist denke ich klar.
Ich stoße jetzt leider auf folgende Probleme zu denen ich einfach keine Lösung finde:
- Ich bekomme größte Schwierigkeiten ActionListener an Buttons anzuhängen da diese ja alle in ihren eigenen Klassen gekapselt sind. Genau an diesem Schritt hänge ich .. ist ja auch noch nicht implementiert.
- Ich habe keine Idee und finde keine Lösung wie ich die ContentPane änder soll. Wenn die ActionListener an den Buttons angehängt sind, dann ist natürlich der nächste Schritt je nach Klick die ContentPane zu ModulA oder ModulB zu ändern.
- Ich zweifle ein wenig, ob dass alles ein guter Ansatz ist.
Mir ist bewusst, dass das ziemlich komplexe Fragen sind die man sicher nicht einfach beantworten kann. Ich hoffe es findet sich trotzdem jemand der mir helfen kann. Ist halt irgendwie der Schritt aus den Lehrbüchern und den Tutorials in die echte Welt.
Mit freundlichen Grüßen und vielen Dank für die Hilfe
ich bin ein Neuling in Java und habe mich bis jetzt durch ein Buch und diverse Tutorials im Internet (u.a. das von Sun) gearbeitet.
Die ganzen "Tutorial Spielereien" wie z.B. zwei Buttons in einem Fenster erstellen und je nach dem welcher geklickt wird ein Textlabel zu ändern habe ich verstanden und kann ich auch implementieren.
Jetzt will ich mich an mein erstes größeres Projekt wagen und habe leider massive Probleme:
Zunächst möchte ich ein "Hauptprogramm-Fenster" öffnen lassen in dem der Nutzer zwischen den zwei Modulen (hier A und B) des Programms wählen kann. Ich habe mir nun überlegt, dass ich das über die ConentPane realisieren könnte (weiß nicht ob das gut und "sauber" ist). Um das ganze schön objektorientiert zu machen will ich die versch. Inhalte der ContentPane in eigene Klassen auslagern.
Mit den Erklärungen ist folgender Code sicher verständlich:
- Das Hauptfenster welches zunächst beim Programmstart geöffnet werden soll.
HauptFenster.java
Code:
public class HauptFenster extends JFrame {
private static final long serialVersionUID = 1L;
private DefaultCP dfCP = new DefaultCP();
public HauptFenster(){
// allgemeines Setup
HauptFenster.setDefaultLookAndFeelDecorated(true);
this.setTitle("Programm mit zwei Modulen");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Menue
// wird später implementiert
// ContentPane setzen
this.getContentPane().add(dfCP);
}
// Buttons des Hauptfensters mit Leben füllen
class ButtonAktionen implements ActionListener{
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == dfCP.neueUeberwei.getText()){
System.out.println("Es wurde auf Kundenverwaltung geklickt");
}
if (e.getActionCommand() == dfCP.kundenVerwaltung.getText()){
System.out.println("Es wurde auf Kundenverwaltung geklickt");
}
}
}
}
- Als Beispiel der Inhalt einer ContentPane - hier die des Hauptfensters
DefaultCP.java
Code:
// Contentpane Inhalt des Hauptfensters
public class DefaultCP extends JPanel{
private static final long serialVersionUID = 1L;
private JLabel willkommenLabel;
protected JButton a, b;
private JPanel textPanel, buttonPanel;
public DefaultCP(){
this.setLayout(new GridLayout(3,1));
// leere Reihe
this.add(new JLabel(""));
// Textlabel
willkommenLabel = new JLabel("Willkommen, was möchten Sie tun?");
willkommenLabel.setFont(new java.awt.Font("Tahoma",0,26));
textPanel = new JPanel();
textPanel.add(willkommenLabel);
// Buttons
buttonPanel = new JPanel();
buttonPanel.setLayout(null);
a= new JButton("Button A");
a.setSize(250, 50);
a.setLocation(100, 1);
b= new JButton("Button B");
b.setSize(250, 50);
b.setLocation(450, 1);
buttonPanel.add(a);
buttonPanel.add(b);
// Unterpanels in Oberpanel
this.add(textPanel);
this.add(buttonPanel);
}
}
Im Hauptprogramm wird halt eine Instanz von Hauptfenster angelegt, das ist denke ich klar.
Ich stoße jetzt leider auf folgende Probleme zu denen ich einfach keine Lösung finde:
- Ich bekomme größte Schwierigkeiten ActionListener an Buttons anzuhängen da diese ja alle in ihren eigenen Klassen gekapselt sind. Genau an diesem Schritt hänge ich .. ist ja auch noch nicht implementiert.
- Ich habe keine Idee und finde keine Lösung wie ich die ContentPane änder soll. Wenn die ActionListener an den Buttons angehängt sind, dann ist natürlich der nächste Schritt je nach Klick die ContentPane zu ModulA oder ModulB zu ändern.
- Ich zweifle ein wenig, ob dass alles ein guter Ansatz ist.
Mir ist bewusst, dass das ziemlich komplexe Fragen sind die man sicher nicht einfach beantworten kann. Ich hoffe es findet sich trotzdem jemand der mir helfen kann. Ist halt irgendwie der Schritt aus den Lehrbüchern und den Tutorials in die echte Welt.
Mit freundlichen Grüßen und vielen Dank für die Hilfe