Ich habe 2 Jpanel erstellt, die zu einem JFrame hinzugefügt werden.
Zuerst wird ein JPanel zum JFrame hinzugefügt.
Ich habe die "add()" Methode von JFrame verwendet, um JPanel hinzuzufügen.
Wie kann JPanel entsorgt werden, nachdem das Panel aus dem JFrame entfernt wurde
JPanel panel = new JPanel();
JFrame j = new JFrame();
j.getContentPane().add(panel);
Die JFrame hat eine JMenuBar drauf gesetzt.
Mit 2 JMenuItems zu einem JMenu hinzugefügt, das schließlich zur JMenuBar hinzugefügt wird.
Das erste JMenuItem Wenn Sie darauf klicken, entfernen Sie das frühere Panel aus dem JFrame und fügen das andere JPanel dem JFrame hinzu. Das 2. JMenuItem führt die Umkehrung durch, entfernt den früheren JPanel und platziert den neueren JPanel.
JMenuItem a = new JMenuItem("p1");
a.addActionListener(new...
{
Frame2 ob = new Frame2();//another class which adds components on the panel.
JPanel p1 = ob.getPanel();//method used to return the JPanel from another class
j.getContentPane().remove(0);
j.getContentPane().add(p1);
});
JMenuItem b = new JMenuItem("p2");
a.addActionListener(new...
{
Frame3 ob2 = new Frame3();//another class which adds components on the panel.
JPanel p2 = ob2.getPanel();//method used to return the JPanel from another class
j.getContentPane().remove(0);
j.getContentPane().add(p2);
});
Das Problem, das ich jetzt Gesicht ist, dass die Platten in dem Speicher, wenn sie entfernt und irgendwo bekommen angeordnet DONot die Platten Speicher occupuing.
Obwohl das vorherige Panel nicht sichtbar ist und das neuere Panel zu sehen ist, kann der Speicher, den das vorherige Panel (nicht sichtbares Panel) belegt, im Task-Manager angezeigt werden.
Und wenn ich zwischen den Panels umschalte, wird der Speicher, den sie okkutiv machen, immer größer, da jedes Mal eine neue Instanz des Panels erstellt wird. Ich möchte die Panels entfernen, wenn sie entfernt werden, aber es gibt keine Methode, ein JPanel wie die dispose() - Methode für JFrame zu entsorgen.
Haben Sie versucht 'setVisible (false)'? – khachik
ich möchte das Panel nicht ausblenden Ich möchte das Panel entfernen, nachdem der Benutzer andere Panel aus der Menüleiste klickt, wie der Menüeintrag p2 – Jaguar