# Swing: frei Objekte anordnen



## Turnschuh (24. Mai 2004)

Servuz,

bin Anfänger !!!
Muss ne Entscheidung treffen ob swing oder awt.
In Swing ist vieles schon vorgefertigt, aber ich kann irgendwie nicht mehr mit setSize() oder setLocation() arbeiten.
Ich würd aber gern die Componenten ziemlich frei anordnen.
Also z.B.: JPanel mit variabler Größe irgendwo in das JFrame und innerhalb des JPanel mehrere Buttons und TextFelder an bestimmten Positionen und in bestimmten Größen.

Thanks


----------



## Mizus (24. Mai 2004)

Eine Frage warum soll das mit swing nicht gehen???



> aber ich kann irgendwie nicht mehr mit setSize() oder setLocation() arbeiten.



Swing ist die Erweiterung von awt. Demzufolge funktioniert das da auch.

Persönlich arbeite ich lieber mit swing... aber denke gibts nicht viel unterschiede ausser das design und das man swing etwas mehr machen kann...

Meine Rat swing :toll: 

mfg mizus


----------



## L-ectron-X (24. Mai 2004)

Du kannst auch in Swing die Components frei anordnen. Dazu brachst Du nur das NullLayout einstellen.


----------



## Turnschuh (24. Mai 2004)

Wie kann ich das NullLayout einstellen, an welcher Stelle ???


----------



## L-ectron-X (24. Mai 2004)

Unter AWT wie Swing schreibst Du innerhalb des Konstrukors:

```
setLayout(null);
```
Die aufrufende Instanz ist ein Objekt der Component, dessen Layout auf null gesetzt werden soll.
Beispiel für Swing:

```
getContentPane().setLayout(null);
```
Beispeil für AWT:

```
meinPanel.setLayout(null);
```


----------



## Mizus (24. Mai 2004)

```
myFrame.setLayout( new NullLayout());
```

mfg mizus


----------



## Mizus (24. Mai 2004)

mein würde doch auch gehen??? oder net??


----------



## bygones (24. Mai 2004)

Mizus hat gesagt.:
			
		

> mein würde doch auch gehen??? oder net??


also bei mir net - meine Java Version kennt keine Klasse "NullLayout"


----------



## Turnschuh (24. Mai 2004)

Mal danke an alle, die hier geschrieben haben, aber ich habe nun folgenden Quelltext und wenn ich das Fenster öffne,
sehe ich erstmal den Button nicht. Erst wenn ich das Fenster maximiere und wieder minimiere oder im Bildschirm hin und her schiebe, wird der Button sichtbar. Weiss jemand wieso???
Thanks


```
import javax.swing.*;

public class MyFrame extends JFrame
{
    public MyFrame()
   {
        try
        {
	UIManager.setLookAndFeel(new com.sun.java.swing.plaf.windows.WindowsLookAndFeel());
        }
        catch(Exception e)
        {
            System.err.println(e);
        }
        setSize(500,500);
        getContentPane().setLayout(null);
        setVisible(true);
		
        JButton b1 = new JButton("press");
        b1.setSize(80,30);
        b1.setLocation(20,20);
        b1.setVisible(true);
        getContentPane().add(b1);
		
    }    
	
    public static void main(String[] args)
    {
        MyFrame frame = new MyFrame();
    }
}
```


----------



## bygones (24. Mai 2004)

das alt bekannte Problem:

```
b1.setVisible(true);
        getContentPane().add(b1);
```
du machst zuerst den Frame sichtbar und fügst dann elemente hinzu...
dreh die beiden Zeilen um es wird gehen.....

Ansonsten - wenn es mal so ist, dass der Frame schon sichtbar ist und du fügst dann Components hinzu, ruf validate() auf... aber bei dir reicht das umdrehen...


----------

