DragLayout: Unterschied zwischen den Versionen
Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springenK |
K |
||
Zeile 68: | Zeile 68: | ||
</code=java> | </code=java> | ||
− | Download eines vollständigen Beispiels: [ | + | Download eines vollständigen Beispiels: [http://forum.byte-welt.net/attachment.php?attachmentid=1369&d=1398530518 DragLayout.jar] |
[[Kategorie:Java]] | [[Kategorie:Java]] |
Version vom 27. April 2014, 18:48 Uhr
Das DragLayout zielt darauf ab, verschiebbare Komponenten in einem JScrollpane
zu haben. Schiebt man eine Komponente über den Rand, vergrößert sich automatisch der Container und die Scrollbalken erscheinen.
Dabei spielt sich alles in 3 Methoden ab:
<code=java>
//geht alle Komponenten durch und findet die Extreme in allen Richtungen heraus, berechnet daraus dann die erforderliche Größe @Override public Dimension preferredLayoutSize(Container parent) { int top = 0,bot = 0,left = 0,right = 0; for(Component c:parent.getComponents()) { Rectangle r=c.getBounds(); if(r.x<left) { left=r.x; } else if(r.x+r.width>right) { right=r.x+r.width; } if(r.y<top) { top=r.y; } else if(r.y+r.height>bot) { bot=r.y+r.height; } } return new Dimension(right+(left*-1),bot+(top*-1)); }
</code=java>
<code=java>
//Falls Komponenten über den Rand nach oben/links geschoben werden, werden deren Koordinaten negativ. //Nachdem der Container dann erweitert wurde und diese Komponenten voll zu erfassen ist es notwendig alle Komponenten nach unten rechts zu verschieben @Override public void layoutContainer(Container parent) { for(Component c:parent.getComponents()) { Point location=c.getLocation(); if(location.x<0) { moveAllBy((location.x*-1),0,parent.getComponents()); } if(location.y<0) { moveAllBy(0,(location.y*-1),parent.getComponents()); } } }
</code=java>
<code=java>
//Bewegt alle Komponenten private void moveAllBy(int dx,int dy,Component[] components) { for(Component c:components) { Point location=c.getLocation(); location.translate(dx,dy); c.setLocation(location); } }
</code=java>
Download eines vollständigen Beispiels: DragLayout.jar
--bERt0r (26.04.2014 23:57 Uhr)