Compositegrösse

Status
Nicht offen für weitere Antworten.

Clip

Bekanntes Mitglied
Hallo,

wie kann ich einem Composite sagen wie groß es sein soll?
Ich probierte ganz wild mit setBounds rum, klappt aber nicht.
Ich ein Composite mit einem GridLayout(10, false).
In dem GridLayout liegen 100 Composites (10 x 10 Matrix mit Bildern und Labels usw..)

Mein Problem ist, dass die 100 Composites anscheinend willkürlich gros sind. Ich möchte sie aber gerne 50 x 50 Pixel groß haben.
Code:
Jedes der 100 Composites ist ein Object der Klasse SampleEntry.


public class SampleEntry extends Composite {

	private Sample sample;
	private Composite parent;

	private ScrolledComposite comp;
	private Canvas canvas;
	private Scale scale;
	private Image image;
	int width, height;

	/**
	 * The constructor.
	 */
	public SampleEntry(Composite parent, int Style, Sample sample) {
		super(parent, Style);
		this.parent = parent;
		this.sample = sample;
		setBounds(0, 0, 50, 50);
		comp = new ScrolledComposite(this, SWT.BORDER | SWT.H_SCROLL
				| SWT.V_SCROLL);
		comp.setBounds(this.getBounds());
		canvas = new Canvas(comp, 0);
		setLayout(new GridLayout());
		setupComp();
		if (sample != null)
			setImage();
	}

	public void setupComp() {
		comp.setAlwaysShowScrollBars(false);
		comp.setLayoutData(new GridData(GridData.FILL_BOTH));
		comp.setContent(canvas);
		layout(true);
	}

	public void setImage() {
		image = new SampleMaterialImageDescriptor(sample.getMaterialType())
				.getImageDesciptor().createImage();
		canvas.setSize(48,48);
		canvas.setLocation(0, 0);
		canvas.addPaintListener(new PaintListener() {
			public void paintControl(PaintEvent e) {
				GC gc = e.gc;
				width = 48;
				height = 48;
				gc.drawImage(image, 0, 0, image.getBounds().width, image
						.getBounds().height, 0, 0, canvas.getSize().x, canvas
						.getSize().y);
			}
		});
		canvas.addDisposeListener(new DisposeListener() {
			public void widgetDisposed(DisposeEvent e) {
				image.dispose();
			}
		});
		redraw();
	}
 

The_S

Top Contributor
Bei einem GridLayout hat jede Komponente die selbe größe. Wenn jede Komponente anders groß sein soll, dann musst du ein anderes Layout verwenden oder die Komponenten selbst nochmal in einen extra Container packen (wenn du die Tabellen-Struktur beibehalten willst)

[edit] OK, mal wieder zu schnell drüber gelesen :oops: sry .
 
G

Gast

Gast
DU kannst einem Element sagen, wie groß es sein soll, indem du ein GridData-Objekt erzeugst:
GridData data = new GridData(50,50);
und dann dem composite zuweist:
comp.setLayoutData(data);

(dies funzt so natürlich nur beim GridLayout, bei FormLayout heißt es FormData)

Gruß, Dirk
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben