# jFrame & ContentPane



## Glider (6. Mai 2007)

Hi,

zuerst, bin noch anfänger 

So, ich wollte mir ein Adressbuch erstellen  mit MySQL anbindung(läuft soweit). nun habe ich ein Frame erstellt, und im ContentPane soll sich zuerst eine Eingabe maske angezeigt werden, was auch funktioniert. Dann bei einem Klick auf ein Menü Item, soll sich das ganze ContentPane ändern. 

Frame Code:



```
jFrame = new JFrame();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setJMenuBar(getJJMenuBar());
jFrame.setSize(713, 200);

jFrame.setContentPane(Suchmaske());

....
```


Code zum ändern, funtz nicht


```
...
jFrame.setContentPane(EintragenMaske());
...
```


hatte sonst keine Idee, wie ich das machen soll. wüsste auch nich nach welchem begriff ich suchen soll, daher frag ich mal hier, wie ich das ändern kann. 

Das quasi das eine formular verschwindet und das andere erscheint ???


----------



## dieta (6. Mai 2007)

Mach das am besten über normale JPanels, die du dann vom Frame entfernst und wieder hinzufügst.


----------



## Glider (6. Mai 2007)

Hi,

hab nun weiter geweckelt und versucht 


```
....
		
this.add(getJPanelEingabeMaske(), BorderLayout.CENTER);
this.add(getJPanelSuchMaske(), BorderLayout.CENTER);
jPanelEingabeMaske.setVisible(true);
jPanelSuchMaske.setVisible(false);
...
```

umschalten via

```
jPanelEingabeMaske.setVisible(true);
jPanelSuchMaske.setVisible(false);
```

bzw.:


```
jPanelEingabeMaske.setVisible(false);
jPanelSuchMaske.setVisible(true);
```


und dann halt in den events jeweils die visibles geändert, kann zwischen den beiden herschalten, aber ich sehe die suchmaske nicht, nur eine leere fläche, wenn ich dann umschalte, sehen ich ganze normal die eingaben maske ??

jemand ne ahnung warum??

bekomm hier langsam ne  krise  ???:L  :wink:


----------



## dieta (7. Mai 2007)

So weit ich weis kann das BordeLayout nur eine Komponente "gleichzeitig" in einem Bereich enthalten. Mach das besser mit remove(...) und add(...) statt über setVisible(...) :


```
this.add(getJPanelEingabeMaske(), BorderLayout.CENTER);
```


```
remove(jPanelEingabeMaske);
add("Center", jPanelSuchMaske);
```


----------



## Glider (7. Mai 2007)

HI

habs das nun folgender maßen gemacht :


```
private JFrame getJFrame() {
		if (jFrame == null) {
			jFrame = new JFrame();
			jFrame.setLayout(null);
			jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			jFrame.setJMenuBar(getJJMenuBar());			
			jFrame.setSize(713, 200);
			jFrame.setLocation(200, 150);
			jFrame.setResizable(false);			
			jFrame.setContentPane(getStart());
			jFrame.setTitle("Java Adressbuch 0.1a");
		}
		return jFrame;
	}
```

und dann in den Menü Item einfach :


```
private JMenuItem getAdressSuchenMenuItem() {
		if (cutMenuItem == null) {
			cutMenuItem = new JMenuItem();
			cutMenuItem.setText("Adresse suchen");			
			cutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
					Event.CTRL_MASK, true));
			
			cutMenuItem.addActionListener(new ActionListener(){

				public void actionPerformed(ActionEvent arg0) {	
					jFrame.setTitle("Nach einer Adresse suchen...");
					jFrame.setContentPane(getAdresseSuchen());
					jFrame.validate();
					
													
				}}
			);
				
			
		}
		return cutMenuItem;
	}
```

bzw:


```
private JMenuItem getCopyMenuItem() {
		if (copyMenuItem == null) {
			copyMenuItem = new JMenuItem();
			copyMenuItem.setText("Copy");
			copyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
					Event.CTRL_MASK, true));
			copyMenuItem.addActionListener(new ActionListener(){

				public void actionPerformed(ActionEvent arg0) {	
					
					jFrame.setTitle("Eine neue Adresse eintragen...");
					jFrame.setContentPane(getAdresseEintragen());						
					jFrame.validate();			
					
				}}
			);
		}
		return copyMenuItem;
	}
```



namen werden noch angepasst, wenn das teil fertig ist , daher nicht wundern


----------

