Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Nochmal Problem mit Kommunikation zwischen Klassen
jetzt habe ich ein zweites Problem. (Oder habe ich vielleicht noch mehr Probleme????) Wie auch immer...
Ich habe also eine Klasse mit meiner Menüleiste. Diese beinhaltet eine ButtonGroup, so dass immer nur ein Menüpunkt ausgewählt werden kann. Abhängig von der Auswahl sollen bestimmte Panels auf dem Frame erscheinen.
Das mache ich so:
Code:
//Adden der Menüleiste im Frame
MenueLeiste menueLeiste = new MenueLeiste(closepanel, this);
// @param closepanel Wen's interessiert, das Prob ist im Beitrag
//"Kommunikation zwischen Klassen, aber bitte MVC" gelöst.
Jetzt die Klasse, die die Panels auf dem Frame adden bzw. removen soll. Da liegt das Problem. Sofern mein Ansatz bis hierhin richtig ist, weiß ich jetzt nicht mehr weiter. Auf keinen Fall soll das adden und removen jedoch im Frame oder der Menüleiste passieren, denn da gehört es meiner Meinung nach nicht hin.
Code:
public class PanelListener implements ActionListener {
JFrame frame = new JFrame();
/**
*
*/
public PanelListener(JFrame frame) {
super();
this.frame = frame;
}
public void actionPerformed(ActionEvent e) {
Component[] comp = frame.getContentPane().getComponents();
for (int i = 0; i < comp.length; i++) {
//Alle Panels bis auf ein bestimmtes entfernen ...
if (comp[i].getName() != "ClosePanel") {
frame.getContentPane().remove(comp[i]);
}
}
System.out.println(e.getActionCommand().toString());
/*
* Hier Panels adden bzw. removen, aber wie????????
*/
frame.repaint();
}
}
Ausserdem muss ich bei dieser Vorgehensweise den "Frame" über die Menüleiste in den Listener mit durchschleifen. Auch nicht grad der Renner, oder?
Ich möchte eigentlich im Frame so wenig Code wie möglich. Wenn ein anderes Panel geladen werden soll (weil in der Menüleiste der entsprechende Punkt angeklickt wurde), soll diese Aktion eben nicht im Frame gesteuert werden. Meine Vorstellung ist, dass der Frame bei Programmstart lediglich das GUI in seiner Grundkonfiguration bereitstellt. Alle weitere sollte ausserhalb passieren. Damit hätte ich im GUI möglichst wenig Actions, Listener usw.
Na ja, wenn's jedoch so üblich ist, die Panelsteuerung im GUI abzuwickeln, werde ich es umprogrammieren.
ich sehe kein problem darin, dass diese Action im Frame ist. Der Frame ist ja schließlich die Componente, die die Panels hält, also liegt es auch in der Verantwortung des Frames die versch. Panels anzuzeigen