# Ein JFrame aus einem anderem JFrame aufrufen!



## Lautsprecher (11. November 2005)

*(Basics!) Ein JFrame aus einem anderem JFrame aufrufen!*

Hallo,
ich hab folgendes Problem, an dem ich jetzt schon die letzten drei Stunde herum bastle.
Ich habe eine Anwendung geschrieben JFrame!
Nun möchte ich per Knopfdruck aus dieser Anwendung ein 2. JFrame starten.

Ich funktioniert auch schon einigermaßen, nur blickt es immer nur ganz kurz auf und
verschwindet dann in der WindowsLeiste. 
Wie erreiche ich es, dass das 2. JFrame vor dem 1. JFrame liegt und ich dort dann 
Eingaben tätigen kann. Wichtig das 1. JFrame soll dabei schon im Hintergrund
erhalten bleibem:

Hab schon versucht im JFrame1 unter der actionPerformed des Button:

AnderesLand al = new AnderesLand();
  al.show();
   al.getFocusableWindowState();
   al.enable(true);
   al.setFocusable(true);

Aber irgendwie funtkioniert es noch nicht richtig!!



Mein JFrame 2 sieht so aus:

```
import java.awt.event.KeyEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Event;
import java.awt.BorderLayout;
import javax.swing.KeyStroke;
import javax.swing.JPanel;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JButton;

public class AnderesLand extends JFrame {

	private JPanel jContentPane = null;
	private JButton jBAusgabe = null;

	private JButton getJBAusgabe() {
	if (jBAusgabe == null) {
	jBAusgabe = new JButton();
	jBAusgabe.setBounds(new java.awt.Rectangle(53,38,57,33));
	jBAusgabe.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
				
	}
});
}
return jBAusgabe;
}


public static void main(String[] args) {

AnderesLand application = new AnderesLand();
application.show();
}

public AnderesLand() {
	super();
	initialize();
}

private void initialize() {
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("Application");
}

private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJBAusgabe(), null);
}
return jContentPane;
}

}
```

Wenn ich dann auf unten in der Startleiste auf das JFrame klicke poppt es auf und ich kann den Button betätigen. Jedoch wenn ich das Fenster schließt, wird auch mein
JFrame 1 geschlossen. Was muss man coden, dass dann nur wieder das JFrame1 
geschlossen wird


----------



## matdacat (14. November 2005)

Hm, warum dein neues Fenster im Hintergrund verschwindet, läßt sich anhand deiner Informationen nicht sagen (sollte eigentlich nicht so sein). Was du versuchen kannst: leite dein zweites Fenster von JDialog ab, damit kannst du ein modalen Dialogfenster erzeugen - ist für deinen Zweck vielleicht sowieso geeigneter.
Und was das Beenden betrifft: du gibst explizit an, dass das so sein soll (EXIT_ON_CLOSE). Sinnvollere Alternative:  HIDE_ON_CLOSE. Siehe API.


----------

