# Vertikales FlowLayout ?



## 0001001 (3. Jun 2008)

Hallo,

ich bräuchte sowas wie ein vertikales FlowLayout.





Ich habe ein längliches JPanel auf dem verschiedene Komponenten (JTextField, JComboBox, JPanel,...) platziert werden sollen, und zwar so dass mit dem Platzieren immer oben begonnen wird. Jede Komponente soll dabei nur den von ihr wirklich benötigten Platz einnehmen (Also ein JPanel der Größe 200,200, das darauf platziert wird, soll dann nicht den gesamten Platz nach unten brauchen sondern wirklich nur 200,200).

Habt ihr da einen Tip?


----------



## SlaterB (3. Jun 2008)

http://java.sun.com/docs/books/tutorial/uiswing/layout/box.html


----------



## 0001001 (3. Jun 2008)

Hi,

mit dem BoxLayout hab ichs auch schon probiert, doch es will einfach nicht klappen. Hier eine lauffähige Demo:

```
package test;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JToolBar;

public class BoxLayoutDemo {
	public static void main(String[] argv){
		new BoxLayoutDemo();
	}
	
	public BoxLayoutDemo(){
		JFrame frame = new JFrame();
		frame.setLayout(new BorderLayout());
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel leftpanel = new JPanel();
		leftpanel.setLayout(new BoxLayout(leftpanel,BoxLayout.Y_AXIS));
		
		ListPanel lp1 = new ListPanel();
		leftpanel.add(lp1);
		
		ListPanel lp2 = new ListPanel();
		leftpanel.add(lp2);
		
		
		JSplitPane split = new JSplitPane();
		split.setLeftComponent(leftpanel);
		split.setDividerLocation(200);
		
		frame.add(split,BorderLayout.CENTER);
		frame.pack();
		frame.setSize(1024,768);
		frame.setVisible(true);
	}
	
	class ListPanel extends JToolBar{
		public ListPanel(){
			setLayout(new GridLayout(1,1));
			setOrientation(JToolBar.VERTICAL);
			JPanel listpanel = new JPanel(new GridLayout(1,1));
			listpanel.setBorder(BorderFactory.createTitledBorder("Disney"));
			listpanel.add(new JScrollPane(new JList(new String[]{"Donald","Dagobert","Mickey","Daisy"})));
			add(listpanel);
			setPreferredSize(new Dimension(200,300));
		}
	}
}
```

Warum belegt jedes dieser JToolbar Panels die Hälfte anstatt nur des benötigten Platzes? Wie lässt sich das ändern?


----------



## SlaterB (3. Jun 2008)

wenn Leute die Tutorials nur lesen würden..

        ListPanel lp1 = new ListPanel();
        lp1.setMaximumSize(lp1.getPreferredSize());
        leftpanel.add(lp1);

        ListPanel lp2 = new ListPanel();
        lp2.setMaximumSize(lp1.getPreferredSize());
        leftpanel.add(lp2);


----------



## 0001001 (3. Jun 2008)

Welches Tutorial? Das von Sun?

Dennoch danke, denn so funktionierts prima!


----------

