# Durch Button drücken neues Fenster öffnen



## norroy (23. Okt 2008)

Hallo zusammen
Wie kann ich es einrichten, das durch das drücken eines buttons ein neues Fenster geöffnet wird?


----------



## Gast (23. Okt 2008)

1. Auf den Button einen ActionListener platzieren. button.addActionListener(...);

2. Im ActionListener die Methode aufrufen, die dir ein neues Fenster bastelt. Also irgendwas mit JFrame f = new JFrame(); f.setvisible(true)..


----------



## norroy (23. Okt 2008)

Gut, herzlichen Dank, es funktioniert
Noch eine Kurze Frage: ist es möglich in einem jFrame irgendwas wie ein Label o.Ä. zu platzieren?


----------



## Fu3L (23. Okt 2008)

joa, was wäre denn sonst der Sinn eines Fensters, wenn du da nix platzieren könntest?  ???:L

Vllt könnte dashier helfen:
http://openbook.galileocomputing.de/javainsel7/javainsel_15_002.htm#mj87dedf105799c9366df83a9a90973d6a


----------



## norroy (23. Okt 2008)

nungut, das ist ja hübsch und schön, aber wie kann ich bestimmen das dieses Label in diesem Fenster angezeigt wird? Ich hab ein Programm, in welchem unter anderem ein Button platziert ist, durch welchen sich das jFrame öffnet.


```
void hilfefenster(){
		int bildschirmgrösse;
		int abstandO;
		int abstandL;
		int breitef;
		int hoehef;
		JFrame hilfefenster = new JFrame();
		bildschirmgroesse=Toolkit.getDefaultToolkit().getScreenSize();
		abstandO=(int)(bildschirmgroesse.height/10);
		abstandL=(int)(bildschirmgroesse.width/10);
		breitef=bildschirmgroesse.width-4*abstandL;
		hoehef=bildschirmgroesse.height-4*abstandO;
		hilfefenster.setSize(breitef,hoehef);
		hilfefenster.setLocation(abstandL,abstandO);
		hilfefenster.setVisible(true);
```

Dieses sieht momentan so aus.
Kann mir jemand helfen?

Edit: Das drücken des Buttons bewirkt das Aufrufen der Klasse "hilfefenster". Ist das so korrekt gelöst? oder ist es überhaupt möglich das Problem so zu lösen?


----------



## Gast (23. Okt 2008)

1. für nen Hilfe Dialog würde ich statt JFrame JDialog nehmen, aber egal.

2. für dein Label übergibst du der funktion hilfefenster() einen String und fügst den dann in ein jlabel das du auf dem jframe platzierst:
also

```
void hilfefenster(String meintext){
      int bildschirmgrösse;
      int abstandO;
      int abstandL;
      int breitef;
      int hoehef;
      JFrame hilfefenster = new JFrame();
     hilfefenster.getContentPane().add(new JLabel(meintext));
      bildschirmgroesse=Toolkit.getDefaultToolkit().getScreenSize();
      abstandO=(int)(bildschirmgroesse.height/10);
      abstandL=(int)(bildschirmgroesse.width/10);
      breitef=bildschirmgroesse.width-4*abstandL;
      hoehef=bildschirmgroesse.height-4*abstandO;
      hilfefenster.setSize(breitef,hoehef);
      hilfefenster.setLocation(abstandL,abstandO);
      hilfefenster.setVisible(true);
```


----------



## norroy (23. Okt 2008)

Und wenn es nun nicht nur ein einziges Label sein soll sondern ein längerer Text, mit Zeilenumbrüchen etc?


----------



## Landei (24. Okt 2008)

JTextArea, JEditorPane...

JComponents verstehen übrigens auch einfaches HTML, du kannst also auch mehrzeilige JLabels erzeugen:

```
JLabel label = new JLabel("<html>Nach Nottingham zog Robin Hood
zog singend durch das Land
bis er ein armes altes Weib
am Weg in Tränen fand</html>");
```


----------



## norroy (24. Okt 2008)

:? so langsam blicke überhaupt nicht mehr durch... ich will nur ein JLabel (welches mit der html-Variante von Landei gefüllt wird) auf einem JFrame platzieren welches sich in der Klasse hilfefenster befindet. 
Ich hab mich mal im Netz etwas "schlau" gemacht was nur noch zu meiner Verwirrung beigetragen hat.
Kann mir jemand helfen?


----------



## Gast (24. Okt 2008)

wo ist dein Problem?
Machs so wie ich oben gesagt habe:

```
void hilfefenster(String meintext){
      int bildschirmgrösse;
      int abstandO;
      int abstandL;
      int breitef;
      int hoehef;
      JFrame hilfefenster = new JFrame();
     hilfefenster.getContentPane().add(new JLabel(meintext));
      bildschirmgroesse=Toolkit.getDefaultToolkit().getScreenSize();
      abstandO=(int)(bildschirmgroesse.height/10);
      abstandL=(int)(bildschirmgroesse.width/10);
      breitef=bildschirmgroesse.width-4*abstandL;
      hoehef=bildschirmgroesse.height-4*abstandO;
      hilfefenster.setSize(breitef,hoehef);
      hilfefenster.setLocation(abstandL,abstandO);
      hilfefenster.setVisible(true);
```

Wenn der Text mehrzeilig ist dann kannst du ENTWEDER per HTML die Zeilen manuell umbrechen (
) das ist aber unschön.

Alternativ nimmst du statt einem JLabel eine JTextArea, die macht den Zeilenumbruch automatisch.


----------



## norroy (25. Okt 2008)

Ich traue mich kaum zu fragen, aber könntest du mir kurz erklären wie das Problem mit JTextArea gelöst werden könnte? Und wie kann ich dort leere Zeilen einfügen?


----------



## Luca_94 (25. Okt 2008)

Also, eine JTextArea ist ein Anzeigefeld, welches mehrzeilige Textausgaben anzeigen kann.
Zeilenumbrüche machst du wie im _System.out.println()_ mit einem Backslash und einem "n" für newLine.
Das ganze sähe so aus:


```
void hilfefenster(String meintext){ 
      int bildschirmgrösse; 
      int abstandO; 
      int abstandL; 
      int breitef; 
      int hoehef; 
      JTextArea ta = new JTextArea("Hallo, \n hier fand ein Zeilenumbruch statt."); //TextAreaErzeugung mit Text
      ta.setEditable(false); //heißt, dass niemand in deinem Hilfefenster rumschreiben kann
      JFrame hilfefenster = new JFrame(); 
     hilfefenster.getContentPane().add(ta); //ta wird in Hilfefenster geaddet
      bildschirmgroesse=Toolkit.getDefaultToolkit().getScreenSize(); 
      abstandO=(int)(bildschirmgroesse.height/10); 
      abstandL=(int)(bildschirmgroesse.width/10); 
      breitef=bildschirmgroesse.width-4*abstandL; 
      hoehef=bildschirmgroesse.height-4*abstandO; 
      hilfefenster.setSize(breitef,hoehef); 
      hilfefenster.setLocation(abstandL,abstandO); 
      hilfefenster.setVisible(true);
```

Bin zwar auch noch nicht lange dabei, in Java zu programmieren, denke aber, dass das ein ganz vernünftiger Ansatz wäre 

Hoffe es hilft dir weiter


----------



## norroy (25. Okt 2008)

Herzlichen, herzlichen dank... Endlich klappt es!
Danke!


----------



## Luca_94 (26. Okt 2008)

Kein Problem


----------

