# JFrame mit Elementen an die Bildschirmgröße automatisch anpassen



## noch_anfänger (5. Mai 2010)

Hallo,

kann man ein JFrame mit Elementen an die Bildschirmgröße automatisch anpassen? 
Das layoutManager von JPanel ist GridBagLayout().
Mit

```
Dimension screensize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        displayFrame. setSize(screensize);
```
wird nur das JFrame an die Bildschirmgröße angepasst, aber nicht die einzelnen JLabels.

Ich danke im Voraus.


----------



## L-ectron-X (5. Mai 2010)

Kommt darauf an, was du in deinem Layout programmiert hast.


----------



## noch_anfänger (5. Mai 2010)

Das habe ich in meinem Layout programmiert:

```
public class View extends JPanel {
GridBagLayout layout = new GridBagLayout();
this.setLayout(layout);
GridBagConstraints c = new GridBagConstraints();
JLabel labelOne = new JLabel();
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 0;
labelOne.setText("a1");
layout.setConstraints(labelOne, c);
this.add(labelOne);

JLabel labelTwo = new JLabel();
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 0;
labelTwo .setText("a2");
layout.setConstraints(labelTwo , c);
this.add(labelTwo );
      ...
JLabel labelSix = new JLabel();
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 0;
labelSix .setText("a2");
layout.setConstraints(labelSix , c);
this.add(labelSix );

JPanel panelMark = new JPanel();
panelMark.setBackground(new Color(255, 255, 255));
panelMark.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.black));
panelMark.setPreferredSize(new Dimension(600, 100));
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 7;
layout.setConstraints(panelMark, c);
JLabel logo = new JLabel("Logo");
panelMark.add(logo);
this.add(panelMark);

GridBagConstraints c2 = new GridBagConstraints();
panelOne = new JLabel(); 
panelOne .setPreferredSize(new java.awt.Dimension(250, 90));
panelOne .setBackground(Color.RED); // (255, 0, 0);
panelOne .setOpaque(true);
panelOne .setBorder(BorderFactory.createLineBorder(Color.BLACK));
panelOne .setFont(new Font("Serif", Font.PLAIN, 20));
panelOne .setHorizontalAlignment(JLabel.CENTER);
panelOne .setText("1");
c2.fill = GridBagConstraints.HORIZONTAL;
c2.insets = new Insets(10, 10, 20, 10); // top, left, bottom, right
c2.gridx = 0;
c2.gridy = 9;
c2.gridwidth = 2;
layout.setConstraints(panelOne , c2);
this.add(panelOne );

}
```
Da ist SetPrefferedSize() zu finden. Ist das die Ursache des Problems? Kann man das anders machen?


----------



## L-ectron-X (6. Mai 2010)

Damit sich die Komponenten ausdehnen, musst du ihnen noch einen Wert für die Ausdenugsgewichtung geben.

Besipiel:
[JAVA=5]c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 0;
c.weightx = 1.0; //Wert für die horizontale Gewichtung
this.add(new JLabel("a1"), c);[/code]

Deinen Code habe ich bei der Gelegenheit gleich mal etwas kompaktiert.

Mehr zum GridBagLayout: http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/64702-gridbaglayout.html


----------

