tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
400
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    deeska deeska ist offline Rookie
    Registriert seit
    May 2008
    Beiträge
    5
    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
     

  2. #2
    Avatar von hammet
    hammet hammet ist offline himekishi
    Registriert seit
    Aug 2006
    Ort
    Bayern
    Beiträge
    334
    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!

  3. #3
    deeska deeska ist offline Rookie
    Registriert seit
    May 2008
    Beiträge
    5
    Meinst du damit das gesamt Fenster in einer Klasse belassen? Dann wird die doch unglaublich gross oder nicht?
     

  4. #4
    Avatar von hammet
    hammet hammet ist offline himekishi
    Registriert seit
    Aug 2006
    Ort
    Bayern
    Beiträge
    334
    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!

  5. #5
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    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

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  6. #6
    deeska deeska ist offline Rookie
    Registriert seit
    May 2008
    Beiträge
    5
    ok vielen dank das macht sinn!
    lg
     

Ähnliche Themen

  1. Website nur Inhalt soll wechseln und laden
    Von di_ettelo im Forum HTML & XHTML
    Antworten: 18
    Letzter Beitrag: 02.03.10, 11:12
  2. Bei klick den Inhalt wechseln
    Von alex130 im Forum Javascript & Ajax
    Antworten: 13
    Letzter Beitrag: 15.09.07, 15:01
  3. Wie Layer oder deren Inhalt per CSS wechseln?
    Von Bart Simpson im Forum CSS
    Antworten: 1
    Letzter Beitrag: 13.01.04, 14:29