Ich habe gerade versucht, meinen ersten eigenen LayoutManager zu schreiben. Leider funktioniert er nicht richtig. Wenn ich etwas hinzufüge, sieht man am Ende nichts. :noe: Kann mir jemand bitte sagen, was da schief läuft?
Er soll wie das FlowLayout, nur Senkrecht funktionieren. Und die Größe nach der Pref. Size setzen.
Er soll wie das FlowLayout, nur Senkrecht funktionieren. Und die Größe nach der Pref. Size setzen.
Java:
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.LayoutManager;
import java.util.LinkedList;
import java.util.List;
public class VerticalFlowLayout implements LayoutManager
{
private int DEFAULT_H_GAPS = 5;
private int DEFAULT_V_GAPS = 2;
private int hgaps;
private int vgaps;
private List<Component> componentList;
public VerticalFlowLayout()
{
super();
hgaps = DEFAULT_H_GAPS;
vgaps = DEFAULT_V_GAPS;
componentList = new LinkedList<Component>();
}
public void addLayoutComponent(String level, Component comp)
{
componentList.add(comp);
}
public Dimension preferredLayoutSize(Container parent)
{
return minimumLayoutSize(parent);
}
public Dimension minimumLayoutSize(Container parent)
{
return(new Dimension(0, 0));
}
public void layoutContainer(Container parent)
{
int currentX = hgaps;
int currentY = vgaps;
Dimension parentSize = parent.getSize();
for(int i = 0, size = componentList.size(); i < size; i++)
{
Component c = parent.getComponent(i);
Dimension prefSize = c.getPreferredSize();
c.setSize(prefSize);
currentY+= prefSize.height;
if(currentY > parentSize.height)
currentY = vgaps;
currentX+= prefSize.width + hgaps;
c.setLocation(currentX, currentY);
}
}
public void removeLayoutComponent(Component comp)
{
componentList.remove(comp);
}
}
Zuletzt bearbeitet: