# Panel (Frame) erzeugen



## Steffan (7. Mrz 2004)

Ich habe ein Frame und darin eine Menuleiste erzeugt. Auf die Menuleiste habe ich ein Menuitem erzeugt und daran in Listener ranghangen. Der funktioniert auch. Jetzt wollte ich wenn man das item drückt das ein neues Fenster aufgeht bzw ein neues Frame(oder Panel). Ich habe in meiner Klasse deswegen eine neue Klasse erzeugt der für den neuen Panel da ist. Und innerhalb des Listeners dann eine instanz. es funktioniert aber noch nicht. Also es öffnet sich nichts neues wenn ich das Item drücke.




```
// mein Item und der Aufruf
jMenuItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e)
        {
            Datumsframe rahmen = new Datumsframe();
            rahmen.show();
										
        }
			
}
);




// mein Klassen fürs das Frame und das Panel
class Datumsframe extends Frame
{
	public Datumsframe()
	{
		setTitle("Datumsangabe");
		setSize(400,100);
			
		addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		}
		
	}
}
```


Was mache ich falsch bzw. wie kann ich es richtig umsetzen?[/code]


----------



## Roar (7. Mrz 2004)

versuch anstatt setTitle("Datumseingabe"); super("Datumseingabe");


----------



## Beni (7. Mrz 2004)

@Roar
 :?:  :?:  :?: 

@Steffan
Hab deinen Code kopiert, und er funktionierte (siehe unten, damit Du dich selbst überzeugen kannst).

Deshalb: Ich weiss, du sagtest der Listener funktioniert, dennoch solltest du mit einem Debugger überprüfen, ob "rahmen.show" auch aufgerufen wird. (Du kannst auch einfach ein _System.out.println( "hallo" )_ direkt vor und nach dem Aufruf setzen).
Wenn es aufgerufen wird, untersuche auch die Grösse und die Position des Frames. (Nach dem "show").

Wird vielleicht irgendwann eine Exception ausgeworfen?


```
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class FrameTest {
	public static void main(String[] args) {
		JMenuItem item = new JMenuItem( "Show" );
		init( item );
		
		JMenu menu = new JMenu( "Test" );
		menu.add( item );
		
		JMenuBar bar = new JMenuBar();
		bar.add( menu );
		
		JFrame frame = new JFrame();
		frame.setJMenuBar( bar );
		frame.pack();
		frame.setVisible( true );
	}
	
	private static void init( JMenuItem jMenuItem ){
//	 mein Item und der Aufruf
		jMenuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e){
				Datumsframe rahmen = new Datumsframe();
				rahmen.show();                  
			}       
		});
	}

//	 mein Klassen fürs das Frame und das Panel
	static class Datumsframe extends Frame{
	   public Datumsframe(){
	      setTitle("Datumsangabe");
	      setSize(400,100);
	         
	      addWindowListener(new WindowAdapter(){
	         public void windowClosing(WindowEvent e){
	            System.exit(0);
	         }
	      });
	   }
	}      
}
```


----------



## Roar (7. Mrz 2004)

du weißt doch was super macht? konstruktoraufruf der oberklasse... hätte ja vielleicht was bringen können...


----------



## Beni (7. Mrz 2004)

Der (ansonsten aufgerufene) Defaultkonstruktor _Frame()_ sieht folgendermassen aus:


```
public Frame() throws HeadlessException {
  this("");
}
```

Deshalb meine Fragezeichen.


----------



## Roar (7. Mrz 2004)

aso...  8) 
is ja egal.


----------

