Buttons und TextField automatisch vergrößern

Schwupsi

Aktives Mitglied
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ß
 
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.
Java:
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;
     }
   }

}
 
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.
Java:
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;
     }
   }

}
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.
 
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.
Java:
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;
     }
   }

}
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?
 
Die Endlosschleife war in der Tat noch nicht ganz überdacht... Mit einem Layoutmanager ist es glaube ich dann tatsächlich die beste Lösung.
 
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!
 

Neue Themen


Zurück
Oben