# Größe eines TextField bestimmen



## Gast (19. Mai 2005)

Ich bin gerade dabei ein Programm zu schreiben das mit Brüchen rechnen kann.Bis jetzt hab ich mal eine GUI-Klasse programmiert. Soweit klappt alles nur möchte ich das die TextFields nicht so breit sind. Also ich möchte gerne die größe der TextFields bestimmen. Dazu habe ich die Methode setMaximumSize() verwendet nur irgendwie hält sich der Layout-Manager daran nicht. Was hab ich falsch gemacht? Oder gibt es keine Möglichkeit die größe eines TextField zu bestimmen? 



```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class BruchrechnenGUI extends JFrame  {

  JTextField zaehler1 = new JTextField();
  JTextField nenner1 = new JTextField();

  JTextField zaehler2 = new JTextField();
  JTextField nenner2 = new JTextField();

  JTextField ergZaehler = new JTextField();
  JTextField ergNenner = new JTextField();

  JLabel rechenzeichen = new JLabel("+", SwingConstants.CENTER);
  JLabel gleich = new JLabel("=", SwingConstants.CENTER);

  JPanel bruch1 = new JPanel();
  JPanel bruch2 = new JPanel();
  JPanel ergBruch = new JPanel();
  JPanel pnlTextFields = new JPanel();

  JRadioButton ad = new JRadioButton("Addieren", true);
  JRadioButton su = new JRadioButton("Subtrahieren", false);
  JRadioButton mu = new JRadioButton("Multiplizieren", false);
  JRadioButton di = new JRadioButton("Dividieren", false);

  ButtonGroup rechenarten = new ButtonGroup();

  JPanel pnlRechenarten = new JPanel();


  public BruchrechnenGUI()  {
    super("Bruchrechnen");

    zaehler1.setMaximumSize(new Dimension(50, 25));
    nenner1.setMaximumSize(new Dimension(50, 25));
    zaehler1.setMaximumSize(new Dimension(50, 25));
    nenner2.setMaximumSize(new Dimension(50, 25));
    ergZaehler.setMaximumSize(new Dimension(50, 25));
    ergNenner.setMaximumSize(new Dimension(50, 25));

    bruch1.setMaximumSize(new Dimension(50, 60));
    bruch1.setLayout(new GridLayout(2, 1, 0, 15));
    bruch1.add(zaehler1);
    bruch1.add(nenner1);

    bruch2.setMaximumSize(new Dimension(50, 60));
    bruch2.setLayout(new GridLayout(2, 1, 0, 15));
    bruch2.add(zaehler2);
    bruch2.add(nenner2);

    ergBruch.setMaximumSize(new Dimension(50, 60));
    ergBruch.setLayout(new GridLayout(2, 1, 0, 15));
    ergBruch.add(ergZaehler);
    ergBruch.add(ergNenner);

    pnlTextFields.setLayout(new GridLayout(1, 5));
    pnlTextFields.add(bruch1);
    pnlTextFields.add(rechenzeichen);
    pnlTextFields.add(bruch2);
    pnlTextFields.add(gleich);
    pnlTextFields.add(ergBruch);

    rechenarten.add(ad);
    rechenarten.add(su);
    rechenarten.add(mu);
    rechenarten.add(di);

    pnlRechenarten.setLayout(new GridLayout(4, 1));
    pnlRechenarten.add(ad);
    pnlRechenarten.add(su);
    pnlRechenarten.add(mu);
    pnlRechenarten.add(di);

    setLayout(new GridLayout(2, 1));
    add(pnlTextFields);
    add(pnlRechenarten);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(500, 250);
    setVisible(true);

  }
}

public class Test  {
  public static void main(String[] args)  {
    BruchrechnenGUI b = new BruchrechnenGUI();
  }
}
```
[/code]


----------



## m@nu (20. Mai 2005)

das GridLayout "zieht" die einzelnen komponenten immer über die ganze grösse einer zelle im layout.
versuchs mal mit einem anderen layoutmanager.

allgemein solltest du die grösse der components nicht über diese selber einstellen. das sollte komplett vom layoutmanager übernommen werden.

wenn du keine einarbeitung scheust, kann ich dir "Forms" von www.jgoodies.com sehr empfehlen.


----------



## Sky (20. Mai 2005)

m@nu hat gesagt.:
			
		

> wenn du keine einarbeitung scheust, kann ich dir "Forms" von www.jgoodies.com sehr empfehlen.



... oder einfach GridBagLayout


----------



## m@nu (20. Mai 2005)

sky80 hat gesagt.:
			
		

> m@nu hat gesagt.:
> 
> 
> 
> ...




na gut, für einfachere GUI's ja... aber für komplexere dinge nicht so mein ding


----------



## Gast (20. Mai 2005)

Erstmal danke für eure Hilfe. Ich habs jetzt mit GridBagLayout gelöst.


----------

