ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
400
400
EMPFEHLEN
-
Hallo!
Ich bastel grad ein bisschen an einer kleinen Anwendung. Mein Problem ist folgendes:
Ich habe mir ein Hauptfenster gebaut und möchte nun in diesem Fenster verschiedene Inhalte anzeigen wenn man unterschiedliche Buttons drückt(wie man das halt so bei einem Programm macht).
Ich mach das schon seit längerem folgendermaßen:
//Hauptklasse für das Fenster
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
import javax.swing.*; import java.awt.event.*; import java.awt.*; public class Test extends JFrame implements ActionListener { static JPanel mainPanel = new JPanel(new FlowLayout()); JButton button = new JButton("Button"); Test(){ setSize(200,100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); button.addActionListener(this); mainPanel.add(button); add(mainPanel); setVisible(true); } public void actionPerformed(ActionEvent e){ if(e.getSource()==button){ new zweitesFenster(); } } public static void main(String[] args) { new Test(); } }
//Zweite Klasse für anderen Inhalt
Code :1 2 3 4 5 6 7 8
import javax.swing.*; public class zweitesFenster { zweitesFenster(){ Test.mainPanel.removeAll(); Test.mainPanel.add(new JLabel("zweites Fenster")); Test.mainPanel.updateUI(); } }
Nun hab ich aber bei meinem aktuellen Projekt gemerkt, dass wenn ich das Programm länger laufen lasse, dieses mehr und mehr Physikalischen Speicher in Anspruch nimmt, weil ich ja immer wieder neue Objekte der verschiedenen Klassen erzeuge.
Die konkrete Frage also:
Kann man das so machen wie ich mir das überlegt habe? Und wenn nein, wie löst das der Professionelle Programmierer?
vielen Dank schonmal
lg
Sven
-
Wieso machst du das über einen Konstruktor und nicht über eine Methode?
Handlanger des Dr. Ex1tus
Ich kenne Matzes dunkles Geheimnis ! oO
o
L_/
OL
This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat.
Hallo Nuray!
-
Meinst du damit das gesamt Fenster in einer Klasse belassen? Dann wird die doch unglaublich gross oder nicht?
-
Nein, das Auslagern ist schon richtig. Doch das was du in deriner zweiten Klasse machst, lässt sich auch ganz leicht in eine Methode fassen. So fällt das ständige "new zweitesFenster();" weg. Damit erstellst du nicht jedes mal ein neues Object, sondern benutzt Methoden eines bestehenden.
Handlanger des Dr. Ex1tus
Ich kenne Matzes dunkles Geheimnis ! oO
o
L_/
OL
This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat.
Hallo Nuray!
-
Hallo,
du machst es besser so. Für jede oberfläche die du im JFrame anzeigen möchtest, schreibst du dir jeweils eine eigene Klasse. Diese Klassen lässt du von JPanel erben und packst dann alles drauf, was du in der jeweiligen Oberfläche haben möchtest.
Dann schaust du dir mal das CardLayout an. Da kannst du nämlich alle Panels mit einem key hinzufügen. Mit diesem Key kannst du dann nachher die jeweilige Oberfläche anzeigen lassen.
http://www.java2s.com/Code/Java/Swin...CardLayout.htm
MFG
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
ok vielen dank das macht sinn!
lg
Ähnliche Themen
-
Website nur Inhalt soll wechseln und laden
Von di_ettelo im Forum HTML & XHTMLAntworten: 18Letzter Beitrag: 02.03.10, 11:12 -
Bei klick den Inhalt wechseln
Von alex130 im Forum Javascript & AjaxAntworten: 13Letzter Beitrag: 15.09.07, 15:01 -
Wie Layer oder deren Inhalt per CSS wechseln?
Von Bart Simpson im Forum CSSAntworten: 1Letzter Beitrag: 13.01.04, 14:29





Zitieren

Login





