JFrame schließen Programm soll aber noch aktiv bleiben

Hallo,

ich habe ein Package erstellt das ein eigenes JFrame enthält, dieses Package wird aus der Klasse Hauptmenu.java geöffnet. Wenn ich im Fenster "Alle Filme anzeigen" auf den Button OK klicke soll sich das JFrame AlleFilmeanzeigen schließen aber das Hauptmenufenster soll noch aktiv bleiben. Mit System.exit(0) wird leider das komplette Programm geschlossen.

Hier meine Codings:

Hauptmenu.java
PHP:
import afa.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import nfa.*;

public class Hauptmenu extends JFrame
{
  private JComponent contentPane = (JComponent) getContentPane();

  Hauptmenu()
  {
    super("Hauptmenu");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      //Fenster lässt sich über X schließen
    HauptmenuLayout();
  }

  void HauptmenuLayout()   //Methode AfaLayout
  {
    contentPane.setLayout(new BorderLayout());

    createHmMenuleiste();    //Methode createHmMenuleiste

    JLabel lblHm = new JLabel("Wählen Sie eine Option aus.");
    JPanel panelHmLabel = new JPanel();
    panelHmLabel.add(lblHm);
    contentPane.add("North", panelHmLabel);
    
    JButton btnHmNfa = new JButton("Neuen Film anlegen");
    btnHmNfa.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        NeuenFilmanlegen.Nfa();
      }
    });

    JButton btnHmSuchen = new JButton("Film suchen");

    JButton btnHmAfa = new JButton("Alle Filme anzeigen");
    btnHmAfa.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        AlleFilmeanzeigen.Afa();
      }
    });
    
    JPanel panelHmButton = new JPanel();
    panelHmButton.add(btnHmNfa);
    panelHmButton.add(btnHmSuchen);
    panelHmButton.add(btnHmAfa);
    contentPane.add("Center", panelHmButton);
  }

  private void createHmMenuleiste()
  {
    JMenuBar Hmleiste = new JMenuBar();               //Menuleiste erzeugen
    JMenu HmProgramm = new JMenu("Programm");        //Menu "Programm" erzeugen

    JMenuItem HmEnde = new JMenuItem("Beenden");

    HmProgramm.add(HmEnde);

    HmEnde.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        closeHmProgramm();
      }
    });

    Hmleiste.add(HmProgramm);
    setJMenuBar(Hmleiste);
  }
  
  void closeHmProgramm()
  {
    System.exit(0);
  }

  public static void main(String[] args)
  {
    Hauptmenu Hm = new Hauptmenu();
    Hm.setLocation(100, 100);       //setzt das Fenster in die Mitte
    Hm.setSize(450, 125);           //legt die Fenstergröße fest
    Hm.setResizable(false);         //Fenster kann nicht verändert werden
    Hm.setVisible(true);            //Fenster wird sichtbar gemacht
  }
}

AlleFilmeanzeigen.java
PHP:
package afa;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class AlleFilmeanzeigen extends JFrame
{
  private String[] Spaltennamen = {"Titel", "Hauptdarsteller(in)", "Regisseur(in)", "Genre", "Jahr"};
  private DefaultTableModel AfaTabelle;
  private JComponent contentPane = (JComponent) getContentPane();

  AlleFilmeanzeigen()
  {
    super("Alle Filme anzeigen");
    AfaLayout();
    readTable();
  }

  void AfaLayout()   //Methode AfaLayout
  {
    contentPane.setLayout(new BorderLayout());

    createAfaMenuleiste();    //Methode createAfaMenuleiste

    AfaTabelle = new DefaultTableModel(null, Spaltennamen);
    JTable tblAfa = new JTable(AfaTabelle);
    tblAfa.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);

    JScrollPane scrollPane = new JScrollPane(tblAfa);
    scrollPane.setPreferredSize(new Dimension(785, 500));      //Größe der Tabelle festlegen

    JPanel panelAfaTable = new JPanel();
    panelAfaTable.add("Center", scrollPane);
    contentPane.add("West", panelAfaTable);

    JButton btnAfaOK = new JButton("OK");
    btnAfaOK.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        closeAfaProgramm();
      }
    });

    JPanel panelAfaButton = new JPanel();
    panelAfaButton.add(btnAfaOK);
    contentPane.add("South", panelAfaButton);
  }

  private void createAfaMenuleiste()
  {
    JMenuBar Afaleiste = new JMenuBar();               //Menuleiste erzeugen
    JMenu AfaProgramm = new JMenu("Programm");        //Menu "AfaProgramm" erzeugen

    JMenuItem AfaEnde = new JMenuItem("Beenden");

    AfaProgramm.add(AfaEnde);
    
    AfaEnde.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        closeAfaProgramm();
      }
    });

    Afaleiste.add(AfaProgramm);
    setJMenuBar(Afaleiste);
  }
  
  void closeAfaProgramm()
  {
    System.exit(0);
  }

  protected void readTable()
  {
    try
    {
      BufferedReader Afareader = new BufferedReader(new FileReader("Filmdatenbank.txt"));     
      String strAfaLine;
      while((strAfaLine = Afareader.readLine()) != null)
      {
        String[] AfaSplit = strAfaLine.split(";");
        AfaTabelle.addRow(AfaSplit);
      }
      AfaTabelle.fireTableDataChanged();
    }

    catch(FileNotFoundException e)
    {
      JOptionPane.showMessageDialog(null, "Datei 'Filmdatenbank.txt' wurde nicht gefunden.", "Fehlermeldung", JOptionPane.ERROR_MESSAGE);
    }

    catch(IOException e)
    {
      JOptionPane.showMessageDialog(null, "Sie besitzen keine Lesezugriff auf die Datei 'Filmdatenbank.txt'.", "Information", JOptionPane.INFORMATION_MESSAGE);
    }
  }

  public static void Afa()
  {
    AlleFilmeanzeigen Afa = new AlleFilmeanzeigen();
    Afa.setLocation(100, 100);       //setzt das Fenster in die Mitte
    Afa.setSize(800, 600);           //legt die Fenstergröße fest
    Afa.setResizable(false);         //Fenster kann nicht verändert werden
    Afa.setVisible(true);            //Fenster wird sichtbar gemacht
  }
}
 
wenn ich richtig verstanden habe, was du willst, solltest du mal:

Java:
void closeHmProgramm() 
{ 
    this.hide(); 
//bzw this.setVisible(false); ab jdk 5
}
oder
Java:
void closeHmProgramm() 
{ 
   this.dispose(); 
}
versuchen.

MfG
Daniel
 
Zurück