# Buttons und TextField automatisch vergrößern



## Schwupsi (28. Jul 2016)

Hi Leute! Bin dabei an einer Taschenrechner GUI zu basteln. Sie ist soweit fertig, nur nervt es mich sehr, dass die Buttons und Textfields nicht automatisch größer werden, sobald ich das Fenster mit der Maus größer ziehe, sondern bei ihrer ursprünglichen Größe bleiben. Kann mir jemand einen Tipp geben, wie man dieses Problem löst?

Gruß


----------



## InfectedBytes (28. Jul 2016)

Layoutmanager
http://openbook.rheinwerk-verlag.de...tml#dodtp169ef7d2-a82b-4140-b287-a4d0c1915451

Ansonsten kommt es drauf an womit du arbeitest. Swing? JavaFX? etc.


----------



## Javius (28. Jul 2016)

Mit dem Befehl (JFrame).getWidth und (JFrame).getHeigth ermittelst du die genaue Größe deines Fensters. D.h. du könntest z.B. sagen:
(Buttongröße)=(JFrame).getWidth/5
Hier noch ein kleines Beispielprogramm.
Ich hoffe, ich konnte weiterhelfen.

```
package Animationen;

import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Beispiel {
   static int buttonbreite;
   static int buttonhöhe;
   public static void main(String[] args) {
     //Fenster erzeugen
     JFrame fenster= new JFrame();
     fenster.setBounds(100, 100, 400, 400);
     fenster.setTitle("Beispiel");
     fenster.setVisible(true);
     
     //Container
     Container c= fenster.getContentPane();
     c.setLayout(null);
     
     //Button
     JButton button= new JButton();
     
     c.add(button);
     
     //Buttongröße ständig ermitteln
     while(true){
    button.setBounds(100, 100, buttonbreite, buttonhöhe);
     buttonbreite=fenster.getWidth()/4;
     buttonhöhe=fenster.getHeight()/6;
     }
   }

}
```


----------



## InfectedBytes (28. Jul 2016)

Javius hat gesagt.:


> Mit dem Befehl (JFrame).getWidth und (JFrame).getHeigth ermittelst du die genaue Größe deines Fensters. D.h. du könntest z.B. sagen:
> (Buttongröße)=(JFrame).getWidth/5
> Hier noch ein kleines Beispielprogramm.
> Ich hoffe, ich konnte weiterhelfen.
> ...


Nicht böse gemeint, aber bitte mach das bloß nicht so. Klar, es geht (abgesehen von der Endlosschleife, welche das Fenster einfrieren lässt), aber genau dafür sind eben Layoutmanager gedacht.


----------



## Schwupsi (29. Jul 2016)

Javius hat gesagt.:


> Mit dem Befehl (JFrame).getWidth und (JFrame).getHeigth ermittelst du die genaue Größe deines Fensters. D.h. du könntest z.B. sagen:
> (Buttongröße)=(JFrame).getWidth/5
> Hier noch ein kleines Beispielprogramm.
> Ich hoffe, ich konnte weiterhelfen.
> ...


 Danke für deine Mühe! Aber das ist leider nicht so ganz das was ich suche, vor allem wegen dieser Endlosschleife. An welche Schraube muss ich drehen, damit die Buttons etc. sich mit dem Fenster zusammen vergrößern, bzw. sich der Fenstergröße anpassen?


----------



## InfectedBytes (29. Jul 2016)

wie gesagt, indem du einfach einen layout manager verwendest und schon geschieht das automatisch.
z.b. GridLayout oder GridBagLayout


----------



## Javius (29. Jul 2016)

Die Endlosschleife war in der Tat noch nicht ganz überdacht... Mit einem Layoutmanager ist es glaube ich dann tatsächlich die beste Lösung.


----------



## Schwupsi (29. Jul 2016)

Dankeschön!


----------



## BuddaKaeks (29. Jul 2016)

Und wenn aus irgendeinem Grund der Layoutmanager nicht funktionieren sollte, kann man anstelle der Endlosschleife, die einfach nur Resourcenfressend ist, auch einfach am JFrame einen ComponentListener (bzw. ComponentAdapter) installieren, der dann WindowResize Events zugespielt bekommt.
Ist aber normalerweise dem LayoutManager nicht vorzuziehen!


----------

