Ich versuche mich hier gerade an einer Gallerie für Icons 160x100.
Dazu erzeuge ich ein ScrolledComposite in das ich ein Composite mit RowLayout packe.
In das Composite werden dann Labels gelegt und mit den Icon-Images bestückt.
Das funktioniert soweit, nur verweigert sich das ScrolledComposite zu erkennen dass sein Child um einiges grösser ist.
Was tun, sprach Zeus?
Dazu erzeuge ich ein ScrolledComposite in das ich ein Composite mit RowLayout packe.
In das Composite werden dann Labels gelegt und mit den Icon-Images bestückt.
Das funktioniert soweit, nur verweigert sich das ScrolledComposite zu erkennen dass sein Child um einiges grösser ist.
Was tun, sprach Zeus?
Java:
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;
public class GalleryTest {
protected static ScrolledComposite scrlMain;
protected static Composite cmpGallery;
public static void main(String[] args) {
Display display = Display.getDefault();
Shell shell = new Shell();
shell.setSize(530, 153);
shell.setText("SWT Application");
//
scrlMain = new ScrolledComposite(shell, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
scrlMain.setAlwaysShowScrollBars(true);
scrlMain.setBounds(0, 0, 524, 126);
scrlMain.setExpandHorizontal(true);
scrlMain.setExpandVertical(true);
//
cmpGallery = new Composite(scrlMain, SWT.NONE);
RowLayout rl_cmpGallery = new RowLayout(SWT.HORIZONTAL);
rl_cmpGallery.justify = true;
rl_cmpGallery.fill = true;
rl_cmpGallery.wrap = false;
cmpGallery.setLayout(rl_cmpGallery);
scrlMain.setContent(cmpGallery);
scrlMain.setMinSize(cmpGallery.computeSize(SWT.DEFAULT, SWT.DEFAULT));
shell.open();
shell.layout();
// -------------
for (int i = 0; i < 5; i++) {
Image img = new Image(display, 160, 100);
GC gcImg = new GC(img);
gcImg.drawRectangle(0, 0, 160 - 1, 100 - 1);
gcImg.drawLine(0, 0, 160 - 1, 100);
gcImg.drawLine(160 - 1, 0, 0, 100 - 1);
gcImg.drawString("#" + i, 5, 40);
gcImg.dispose();
//
Label lbl = new Label(cmpGallery, SWT.NONE);
lbl.setImage(img);
lbl.setSize(160, 100);
}
cmpGallery.pack();
//scrlMain.pack();
//scrlMain.layout();
// -------------
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
}