# Im BorderLayout eine feste Grösse zuweisen!



## florianlez (22. Nov 2010)

Hallo Zusammen,

wie kann ich im BorderLayout eine feste Grösse zB. für den Button "pageStart" zuweisen bzw. geht das überhaupt im BorderLayout?
Ich habe bisher alle nur erdenklichen Varianten ausprobiert, kann aber nicht kompilieren.

Dieser code lässt sich kompilieren, aber die Grösse änder sich nicht wenn ich zb.:
pageStart.setSize(150,150);
hinzufüge.
Kann mir jemand auf die Sprünge helfen wo mein Denkfehler liegt..?

Hier einrelevanter  Auszug des Codes:

(...)

JButton pageStart = new JButton("OBEN");
JButton pageEnd = new JButton("UNTEN");
JButton center = new JButton("MITTE");
JButton lineStart = new JButton("LINKS");
JButton lineEnd = new JButton("RECHTS");



frame.getContentPane().add(pageStart, BorderLayout.PAGE_START);
frame.getContentPane().add(center, BorderLayout.CENTER);
frame.getContentPane().add(pageEnd, BorderLayout.PAGE_END);
frame.getContentPane().add(lineStart, BorderLayout.LINE_START);
frame.getContentPane().add(lineEnd, BorderLayout.LINE_END);

//mein Versuch die Grösse festzulegen//
pageStart.setSize(150,150);

frame.pack();
frame.setVisible(true);

(...)


----------



## eRaaaa (22. Nov 2010)

Probiere [c]pageStart.setPreferredSize(new Dimension(150,150));[/c]


----------



## L-ectron-X (22. Nov 2010)

florianlez hat gesagt.:


> geht das überhaupt im BorderLayout?


Im NORTH- und SOUTH-Bereich nur hinsichtlich der Höhe,
im WEST- und EAST-Bereich nur hinsichtlich der Breite.
im CENTER-Bereich gar nicht.

Vergleiche die programmierte Größe mit der angezeigten.

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

public class Demo extends JFrame {
  public Demo(String title) {
    super(title);
    setSize(800, 600);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

    JPanel panel = new JPanel(new BorderLayout());
    
    JButton north = new JButton("NORTH");
    JButton south = new JButton("SOUTH");
    JButton east = new JButton("EAST");
    JButton west = new JButton("WEST");
    JButton center = new JButton("CENTER");
    
    north.setPreferredSize(new Dimension(30,100)); //breite, höhe
    panel.add(north, BorderLayout.NORTH);
    
    south.setPreferredSize(new Dimension(30,100)); //breite, höhe
    panel.add(south, BorderLayout.SOUTH);
    
    east.setPreferredSize(new Dimension(100, 30)); //breite, höhe
    panel.add(east, BorderLayout.EAST);
    
    west.setPreferredSize(new Dimension(100, 30)); //breite, höhe
    panel.add(west, BorderLayout.WEST);
    
    center.setPreferredSize(new Dimension(30, 30)); //breite, höhe
    panel.add(center, BorderLayout.CENTER);
    
    add(panel);
  }
  
  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        new Demo("Demo").setVisible(true);
      }
    });
  }
}
```


----------



## florianlez (23. Nov 2010)

eRaaaa hat gesagt.:


> Probiere [c]pageStart.setPreferredSize(new Dimension(150,150));[/c]



hab ich auch schon dran gedacht aber ich bekomme dann folgende Fehlermeldung:

(...)
blm.java:25: cannot find symbol
symbol  : class Dimension
location: class BLM
 pageStart.setPreferredSize(new Dimension(150,150));

Dimension wird da nicht anerkannt


----------



## L-ectron-X (23. Nov 2010)

Fehlt vielleicht noch die Import-Anweisung: 
	
	
	
	





```
import java.awt.Dimension;
```
Aber wie gesagt, die Änderung der Größe wird Layout bedingt nur teilweise funktionieren...


----------



## florianlez (23. Nov 2010)

Dieses Layout erschien mir erst mal am passendsten, ich teste gerade mit den verschiedenen herum, bisher sind mir allerdings auch nur Border,Flow und BoxLayout bekannt... die letzten kommen für mein Projekt aber überhaupt nicht in frage.

Mit deinem Code kann ich ganz gut rumtesten und den Aufbau besser nachvollziehen, danke dafür  

Zum lernen und verstehen habe ich mir gedacht, baue ich eine  Oberfläche, ähnlich dem Thunderbird Kalender, ich denke wenn mir das gelingt habe ich einen guten Einstieg.

Was also bedeuten würde, dass noch eine Menüleiste, diverse Buttons, eine scrollpane, Editierfeld etc. und natürlich auch noch ein Kalender hinzukommen sollen ... so wie es aussieht ist das BorderLayout nicht die beste Wahl dafür oder?


----------



## L-ectron-X (23. Nov 2010)

Doch, warum nicht? Du kannst auch LayoutManager mittels verschachtelten Panels kombinieren.


----------



## florianlez (23. Nov 2010)

Wie ich es jetzt verstehe tausche ich dann quasi einfach die Komponente

JButton north = new JButton ("OBEN"); 

gegen 

JPanel north = new JPanel ("OBEN"); aus?

und weise dann zb.:

panel.add(north, JMenuBar.NORTH);

zu!?


----------



## L-ectron-X (23. Nov 2010)

So in etwa, ja. Jedes Panel kann dabei nahezu beliebige LayoutManager und Komponenten-Konstellationen haben.


----------



## florianlez (24. Nov 2010)

Ok dann wäre meine Frage nach der Grössenzuweisung eigentlich beantwortet, und ich werde ein bisschen mit dem Layout und den Komponenten herumprobieren.
Danke für deine Antworten und den Beispielcode

FLO


----------

