# GUI - 2 Buttons mit 2 Fenstern verlinken



## lucky (4. Jan 2005)

Hallo, ich habe folgendes Problem, ich möchte eine Gui programmieren, jedoch will ich ein Fenster (ProtokollVerwalten) das 2 Buttons enthält mit zwei vercshiedenen Fenstern verknüpfen, so das bei buttonklick, ein bestimmtes Fenster , das für den bestimmten Button gedacht ist geöffnet wird, und das alte Fenster geschlossen wird. Ich habe geschafft das beide Buttons ein und das selbe Fenster öffnen, jedoch klappt auch irgendwas mit der hide Methode nicht ! Könnt ihr mir helfen ?

Warum kann ich hier den codetag nicht benutzen ?
gruß lucky


*Klasse PotokollVerwalten* 


```
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import de.*; 
import de.data.*; 
import de.db.*; 
import de.report.*; 
import java.rmi.Naming; 
import java.rmi.RemoteException; 
import java.net.MalformedURLException; 
import java.rmi.NotBoundException; 

// Fensterklasse definieren 
public class ProtokollVerwalten extends JFrame 
  { 
  JButton ProtokollAnlegen, ProtokollEditieren; 

  // Ereignisbehandlung für das Fenster 
  class CMeinWindowLauscher extends WindowAdapter 
   { 
   public void windowClosing(WindowEvent e) 
      { 
      System.exit(0); 
      } 
   } 

  // Ereignisbehandlung für die Steuerelemente 
  class CMeinActionLauscher implements ActionListener 
   { 
   public void actionPerformed(ActionEvent e) 
     { 
       
     int i; 

     //ProtokollAnlegen.setText(e.paramString()  );      
     //ProtokollEditieren.setText(e.paramString()  );      
     //hier wird das neue Fenster geöffnet, eigentlich sollte das alte Fenster sich schließen, aber irgendwie 
     //geht die Methode hide noch nicht richtig hier!!! 
     
     ProtokollAnlegen Fenster = new ProtokollAnlegen("ProtokollAnlegen"); 
        Fenster.pack(); 
        Fenster.setSize(600,300); 
        Fenster.show(); 
       // fenster2.hide(); geht nicht, warum wohl ??? 
           
     } 
   } 

  // der Konstruktor 
  ProtokollVerwalten(String titel) 
   { 
   super(titel); 

   // Button-Instanzen erzeugen 
    
   //ProtokollAnlegen = new JButton(titel); 
   ProtokollAnlegen = new JButton ("ProtokollAnlegen"); 
   ProtokollEditieren = new JButton("ProtokollEditieren"); 
    

   // Layout-Manager zum Anordnen der Schalter 
   getContentPane().setLayout(new FlowLayout()); 

   // Buttons in Fenster aufnehmen 
   getContentPane().add(ProtokollAnlegen); 
   getContentPane().add(ProtokollEditieren); 
    


   // Frame bei einem WindowListener anmelden 
   addWindowListener(new CMeinWindowLauscher ()); 

   // Schalter bei ActionListener registrieren 
   ProtokollAnlegen.addActionListener(new CMeinActionLauscher()); 
   ProtokollEditieren.addActionListener(new CMeinActionLauscher()); 
    
   } 


  public static void main(String[] args) 
   { 
   ProtokollVerwalten fenster2 = new ProtokollVerwalten("ProtokollVerwalten"); 
   fenster2.pack(); 
   fenster2.setSize(200,100); 
   fenster2.show(); 
   } 
}
```

*Klasse ProtokollAnlegen* 



```
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import de.*; 
import de.data.*; 
import de.db.*; 
import de.report.*; 
import java.rmi.Naming; 
import java.rmi.RemoteException; 
import java.net.MalformedURLException; 
import java.rmi.NotBoundException; 

public class ProtokollAnlegen extends JFrame implements ActionListener{ 
   public static void main(String[]args){ 
      ProtokollAnlegen auswahl = new ProtokollAnlegen("Protokoll anlegen"); 
       
      auswahl.pack(); 
      auswahl.setSize(700,500); 
      auswahl.show(); 
   } 
   //der Konstruktor 
   ProtokollAnlegen(String titel) 
   { 
      super(titel); 
    
   //den Native Look and Feel erzwingen 
   try 
   { 
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
   } 
   catch(Exception ex) 
   { 
      System.err.println("Fehler bei LookandFeel\n"); 
   } 
    
   JPanel pane = new JPanel(); 
   pane.setLayout(new GridLayout(12,2,2,2)); 
   setContentPane(pane); 
    
   JPanel zelle1 = new JPanel(); 
   JPanel zelle2 = new JPanel(); 
   JPanel zelle3 = new JPanel(); 
   JPanel zelle4 = new JPanel(); 
   JPanel zelle5 = new JPanel(); 
   JPanel zelle6 = new JPanel(); 
   JPanel zelle7 = new JPanel(); 
   JPanel zelle8 = new JPanel(); 
   JPanel zelle9 = new JPanel(); 
   JPanel zelle10 = new JPanel(); 
   JPanel zelle11 = new JPanel(); 
   JPanel zelle12 = new JPanel(); 
   JPanel zelle13 = new JPanel(); 
   JPanel zelle14 = new JPanel(); 
   JPanel zelle15 = new JPanel(); 
   JPanel zelle16 = new JPanel(); 
   JPanel zelle17 = new JPanel(); 
   JPanel zelle18 = new JPanel(); 
   JPanel zelle19 = new JPanel(); 
   JPanel zelle20 = new JPanel(); 
   JPanel zelle21 = new JPanel(); 
   JPanel zelle22 = new JPanel(); 
    

    
   //Label 
   JLabel text1 = new JLabel("Student auswählen"); 
   text1.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
   zelle1.add(text1); 
    
   JLabel text2 = new JLabel("Pruefer1 auswählen"); 
      text2.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
      zelle3.add(text2); 
       
      JLabel text5 = new JLabel("Pruefer2 auswählen"); 
            text5.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
            zelle5.add(text5); 
       
      JLabel text3 = new JLabel("Modul auswählen"); 
            text3.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
            zelle7.add(text3); 
                
      JLabel text6 = new JLabel("RealDate"); 
                  text6.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
                  zelle9.add(text6); 
             
      JLabel text7 = new JLabel("RealDauer"); 
                  text7.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
                  zelle11.add(text7); 
                   
      JLabel text8 = new JLabel("Ort"); 
                  text8.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
                  zelle13.add(text8); 
                   
      JLabel text9 = new JLabel("Protokoll-ID"); 
                        text9.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
                        zelle15.add(text9); 
                         
      JLabel text10 = new JLabel("Notiz"); 
                        text10.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
                        zelle17.add(text10); 
                         
      JLabel text11 = new JLabel("Note"); 
                        text11.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
                        zelle19.add(text11); 
                   
   //Liste 
   String[] elemente1 = {"Daniela","Kathrina","Meike","Tina","Gerrit", "Pierre"}; 
   JList studenten = new JList(elemente1); 
   studenten.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
    
    
   String[] elemente2 = {"Thies","Rathke","Roos","Schwarzer","Nohr", "Hutter"}; 
      JList pruefer1 = new JList(elemente2); 
      pruefer1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
       
       
      String[] elemente3 = {"Thies","Rathke","Roos","Schwarzer","Nohr", "Hutter"}; 
            JList pruefer2 = new JList(elemente3); 
            pruefer2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
             
    
      String[] elemente4 = {"BWL3","IT3","WM1"}; 
            JList module = new JList(elemente4); 
            module.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
             
      String[] elemente5 = {"1,0","1,3","1,7","2,0","2,3","2,7","3,0","3,3","3,7","4,0","4,3","4,7","5,0","5,3","5,7","6,0"}; 
                  JList note = new JList(elemente4); 
                  module.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
             
             
//      Kombinationsfeld 
    
        JComboBox kombi1 = new JComboBox(elemente1); 
        zelle2.add(kombi1); 
    
        JComboBox kombi2 = new JComboBox(elemente2); 
           zelle4.add(kombi2); 
       
         JComboBox kombi3 = new JComboBox(elemente3); 
              zelle6.add(kombi3); 
          
         JComboBox kombi4 = new JComboBox(elemente4); 
              zelle8.add(kombi4); 
              
         JComboBox kombi5 = new JComboBox(elemente5); 
                    zelle20.add(kombi5); 
              
   //Texteingabefeld 
   JTextField feld1= new JTextField(22); 
   feld1.setText(" "); 
   zelle10.add(feld1); 
    
//   Texteingabefeld 
     JTextField feld2= new JTextField(5); 
     feld2.setText(" "); 
     zelle12.add(feld2); 
     
//     Texteingabefeld 
      JTextField feld3= new JTextField(4); 
      feld3.setText(" "); 
      zelle14.add(feld3); 
       
//      Texteingabefeld 
        JTextField feld4= new JTextField(5); 
        feld4.setText(" "); 
        zelle16.add(feld4); 
        
//      Texteingabefeld 
        JTextField feld5= new JTextField(50); 
        feld5.setText(" "); 
        zelle18.add(feld5); 
        

       
   //Button 
   JButton speichern = new JButton("save"); 
   zelle21.add(speichern); 
    
   JButton abbrechen = new JButton("cancel"); 
   zelle22.add(abbrechen); 
    
   //Button save in Datenbank speichern 
    
   getRootPane().setDefaultButton(speichern); 

    
    
    
   pane.add(zelle1); 
   pane.add(zelle2); 
   pane.add(zelle3); 
   pane.add(zelle4); 
   pane.add(zelle5); 
   pane.add(zelle6); 
   pane.add(zelle7); 
   pane.add(zelle8); 
   pane.add(zelle9); 
   pane.add(zelle10); 
   pane.add(zelle11); 
   pane.add(zelle12); 
   pane.add(zelle13); 
   pane.add(zelle14); 
   pane.add(zelle15); 
   pane.add(zelle16); 
   pane.add(zelle17); 
   pane.add(zelle18); 
   pane.add(zelle19); 
   pane.add(zelle20); 
   pane.add(zelle21); 
   pane.add(zelle22); 
    
    
   //Menueleiste erstellen 
   JMenuBar menue_leiste = new JMenuBar(); 
   JMenu menu1 = new JMenu("Programm"); 
   JMenuItem prog_item1 = new JMenuItem ("Programm beenden"); 
   prog_item1.addActionListener(this); 
   menu1.add(prog_item1); 
    
   menue_leiste.add(menu1); 
   setJMenuBar(menue_leiste); 
    
   //Fenster schließen 
   class CFensterLauscher extends WindowAdapter 
   { 
      public void windowClosing(WindowEvent e) 
      { 
         System.exit(0); 
      } 
   } 
   addWindowListener(new CFensterLauscher()); 
} 
//Behandlung der Menuebefehle 
public void actionPerformed(ActionEvent e) 
{ 
   String quelle = e.getActionCommand(); 
   if(quelle.equals("Programm beenden")) 
   { 
      System.exit(0); 
} 
}    
}
```

*Klasse ProtokollEditieren* 



```
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import de.*; 
import de.data.*; 
import de.db.*; 
import de.report.*; 
import java.rmi.Naming; 
import java.rmi.RemoteException; 
import java.net.MalformedURLException; 
import java.rmi.NotBoundException; 

public class ProtokollEditieren extends JFrame implements ActionListener{ 
   public static void main(String[]args){ 
      ProtokollEditieren auswahl = new ProtokollEditieren("Protokoll editieren"); 
       
      auswahl.pack(); 
      auswahl.setSize(400,300); 
      auswahl.show(); 
   } 
   //der Konstruktor 
   ProtokollEditieren(String titel) 
   { 
      super(titel); 
    
   //den Native Look and Feel erzwingen 
   try 
   { 
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
   } 
   catch(Exception ex) 
   { 
      System.err.println("Fehler bei LookandFeel\n"); 
   } 
    
   JPanel pane = new JPanel(); 
   pane.setLayout(new GridLayout(8,2,2,2)); 
   setContentPane(pane); 
    
   JPanel zelle1 = new JPanel(); 
   JPanel zelle2 = new JPanel(); 
   JPanel zelle3 = new JPanel(); 
   JPanel zelle4 = new JPanel(); 
   JPanel zelle5 = new JPanel(); 
   JPanel zelle6 = new JPanel(); 
   JPanel zelle7 = new JPanel(); 
   JPanel zelle8 = new JPanel(); 
   JPanel zelle9 = new JPanel(); 
   JPanel zelle10 = new JPanel(); 
   JPanel zelle11 = new JPanel(); 
   JPanel zelle12 = new JPanel(); 
    

    
   //Label 
   JLabel text1 = new JLabel("Protokoll-ID auswählen"); 
   text1.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
   zelle1.add(text1); 
                
      JLabel text2 = new JLabel("RealDate"); 
                  text2.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
                  zelle3.add(text2); 
             
      JLabel text3 = new JLabel("RealDauer"); 
                  text3.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
                  zelle5.add(text3); 
                               
      JLabel text4 = new JLabel("Notiz"); 
                        text4.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
                        zelle7.add(text4); 
                         
      JLabel text5 = new JLabel("Note"); 
                        text5.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
                        zelle9.add(text5); 
                   
   //Liste 
    
             
      String[] elemente1 = {"1,0","1,3","1,7","2,0","2,3","2,7","3,0","3,3","3,7","4,0","4,3","4,7","5,0","5,3","5,7","6,0"}; 
                  JList note = new JList(elemente1); 
                  note.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
                   
      String[] elemente2 = {"01","02","03","04","05","06","07","08","09","10"}; 
                        JList protokollID = new JList(elemente1); 
                        protokollID.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
             
             
//      Kombinationsfeld 
    
        JComboBox kombi1 = new JComboBox(elemente1); 
        zelle10.add(kombi1); 
        
      JComboBox kombi2 = new JComboBox(elemente2); 
              zelle2.add(kombi2); 
    
              
    
    
//   Texteingabefeld 
     JTextField feld2= new JTextField(5); 
     feld2.setText(" "); 
     zelle4.add(feld2); 
     
//     Texteingabefeld 
      JTextField feld3= new JTextField(4); 
      feld3.setText(" "); 
      zelle6.add(feld3); 
       
//      Texteingabefeld 
        JTextField feld4= new JTextField(5); 
        feld4.setText(" "); 
        zelle8.add(feld4); 

       
   //Button 
   JButton speichern = new JButton("edit"); 
   zelle11.add(speichern); 
    
   JButton abbrechen = new JButton("cancel"); 
   zelle12.add(abbrechen); 
    
   pane.add(zelle1); 
   pane.add(zelle2); 
   pane.add(zelle3); 
   pane.add(zelle4); 
   pane.add(zelle5); 
   pane.add(zelle6); 
   pane.add(zelle7); 
   pane.add(zelle8); 
   pane.add(zelle9); 
   pane.add(zelle10); 
   pane.add(zelle11); 
   pane.add(zelle12); 
    
    
    
   //Menueleiste erstellen 
   JMenuBar menue_leiste = new JMenuBar(); 
   JMenu menu1 = new JMenu("Programm"); 
   JMenuItem prog_item1 = new JMenuItem ("Programm beenden"); 
   prog_item1.addActionListener(this); 
   menu1.add(prog_item1); 
    
   menue_leiste.add(menu1); 
   setJMenuBar(menue_leiste); 
    
   //Fenster schließen 
   class CFensterLauscher extends WindowAdapter 
   { 
      public void windowClosing(WindowEvent e) 
      { 
         System.exit(0); 
      } 
   } 
   addWindowListener(new CFensterLauscher()); 
} 
//Behandlung der Menuebefehle 
public void actionPerformed(ActionEvent e) 
{ 
   String quelle = e.getActionCommand(); 
   if(quelle.equals("Programm beenden")) 
   { 
      System.exit(0); 
} 
}    
}
```

_Das nächste mal die codetags bitte richtig einfügen - Roar_


----------



## dotlens (5. Jan 2005)

```
public void actionPerformed(ActionEvent e)
     {
       
     int i;

     //ProtokollAnlegen.setText(e.paramString()  );     
     //ProtokollEditieren.setText(e.paramString()  );     
     //hier wird das neue Fenster geöffnet, eigentlich sollte das alte Fenster sich schließen, aber irgendwie
     //geht die Methode hide noch nicht richtig hier!!!
     
     ProtokollAnlegen Fenster = new ProtokollAnlegen("ProtokollAnlegen");
        Fenster.pack();
        Fenster.setSize(600,300);
        Fenster.show();
       // fenster2.hide(); geht nicht, warum wohl ???
       this.hide() //var fenster2 ist in liegt in einer anderen Klasse
           
     }
   }
```
vars schreibt man klein


----------



## Guest (5. Jan 2005)

hallo, 

 :shock: 
habe den code so eingefügt, so wie du gesagt hast, aber es ging nicht, das fenster bleibt immer noch offen, und vor
allem muss ich noch die 2 verschiedenen buttons an 2 verschiedene fenster verbinden. Wie mache ich das?
Habt ihr eine Idee ?
	
	
	
	





```

```


----------



## lucky (5. Jan 2005)

sag mal wie kann ich mein feedback zu einem hilfebeitrag geben, ich blick es gerade gar nicht !
gruß lucky


----------



## dotlens (6. Jan 2005)

du kannst 2 Buttons den selben ActionListener hinzufügen, wenn du das mit "verbinden" meinst.

wofür brauchst du das ganze eigentlich. würd es nicht auch gehen wenn nur das Panel im JFrame wechselt?

gibt es fehler aus? oder was funktionier nicht?


----------

