Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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?
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?
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!