JDesktopPane weiternutzen

Schrubber

Bekanntes Mitglied
Hallo,

ich hab folgenden Aufbau:

1 Hauptfenster, in das mittels JDesktoppane & JInternalFrame alle Fenster erzeugt werden und somit auch nur darin erscheinen. Nun möchte ich mir über eine Funktion in dem neu erzeugten Fenster ein weiteres Panel erzeugen, das einen Text ausgibt. Hab es bisher mit ganz normalen Panels gemacht, jedoch stört es, dass sie in den Hintergrund verschwinden & außerhalb des JDesktopPane agieren.

Meine Frage: Wie mache ich das? Habe mir bereits beim Aufruf der Klasse den DesktopPane übergeben und diesen dann auch versucht zu nutzen, jedoch ohne erfolg.


Grüße,
Schrubber
 

Michael...

Top Contributor
Nun möchte ich mir über eine Funktion in dem neu erzeugten Fenster ein weiteres Panel erzeugen, das einen Text ausgibt. Hab es bisher mit ganz normalen Panels gemacht, jedoch stört es, dass sie in den Hintergrund verschwinden & außerhalb des JDesktopPane agieren./QUOTE]
Versteh ich nicht. "neu erzeugtes Fenster" ist ein JInternalFrame? Wo wird das JPanel eingefügt? Was bedeutet "außerhalb des JDestktopPane agieren". JPanel können doch gar nichts ;-)
 

Schrubber

Bekanntes Mitglied
1 großes Fenster_
JDesktopPane desktop = new JDesktopPane();

1 Fenster darin:
JPanel mainPanel = new JPanel();

Dieses mainPanel ist innerhalb des großen Fensters, wie ein Fenster im Fenster. Frei beweglich, kann aber dden DesktopPane nicht verlassen.

Nun möchte ich 1 weiteres Fenster erzeugen, welches frei beweglich ist. Jedoch wird das desktop-teil in der Hauptklasse erzeugt, dieses ruft dann den Const. von der 2. Klasse auf -> mainPanel wird erzeugt innerhalb des großen Fensters. In der 2. Klasse steht nun auch das Fenster, was ich gerne innerhalb erzeugt haben will. Jedoch kann ich auf den desktopPane aus der Hauptklasse nicht zugreifen :/
 

Michael...

Top Contributor
In der 2. Klasse steht nun auch das Fenster, was ich gerne innerhalb erzeugt haben will. Jedoch kann ich auf den desktopPane aus der Hauptklasse nicht zugreifen :/
Dann benötigt die zweite Klasse eine Referenz auf die Hauptklasse, damit sie z.B. der Hauptklasse das Panel übergeben kann, damit diese es in die JDesktopPane einfügt.
Liegen die Panels direkt (als ohne JInternalFrame) auf der JDesktopPane?
 

Michael...

Top Contributor
Ohne den Code zu kennen, kann man die Ursache benennen ;-)
Aber vermutlich kämpfst Du mit einem Problem mit dem sich viele Anfänger rumschlagen:
Dem objektorientierten und "objektübergreifenden" Programmieren.

Wenn Du auf der JDesktopPane welche ein Attribut der Hauptklasse ist aus einer anderen Klasse etwas anordnen willst, benötigt diese Klasse eine Referenz auf die Hauptklasse oder direkt auf die JDesktopPane. Wie das dann umgesetzt wird hängt vom Design ab.
Wenn die zweite Klasse aus der Hauptklasse heraus erzeugt wird, ist das ziemlich einfach und könnte in etwa so aussehen (in Pseudo Java Code):
Java:
class HauptKlasse {
    private JDesktopPane desktop;
    ....
    public HauptKlasse() {
        ...
        ZweiteKlasse zKlasse = new ZweiteKlasse(this);
        ...
    }

    public void addToDesktop(JComponent comp) {
        desktop.add(comp);
        ...
    }
}

class ZweiteKlasse {
    private HauptKlasse main;

    public ZweiteKlasse(HauptKlasse main) {
        this.main = main;
        ...
        main.addToDesktop(new JLabel("Label, das auf den Desktop aus der Hauptklasse soll!"));
    }
}
 

Ähnliche Java Themen

Neue Themen


Oben