2017-10-25 5 views
0

Dies ist eine RCP Eclipse APP, Sie haben eine Liste eines Objekts (Name, Menge, Bild), es wird mit einer FOR-Schleife heruntergeladen.Warum wird die Ausrichtung der swt (Labels) -Komponente zerstört?

Diese Information wird heruntergeladen und jedes Attribut des Objekts wird in der APP mit einem Label angezeigt.

zum Beispiel:

lblName[idx] = ComponentProvider.getLabel(composite, getObject().getName(), 8); 
lblName[idx].setBounds(5, pos, 195, 20); 

lblValue[idx] = ComponentProvider.getLabel(composite, getObject().getValue(), 8); 
lblValue[idx].setBounds(205, pos, 73, 20); 

lblStatus[idx] = ComponentProvider.getLabel(composite, "", 8); 
lblStatus[idx].setBounds(280, pos, 39, 20); 
lblStatus[idx].setImage(StateIconManager.getImageForState(getObject().getImg())); 

Dies diese drei Attribute ausrichtet und angezeigt wird: [Name] [Menge] [Bild]

Dies funktioniert, ist das Problem hier: Nach einer Laufzeit der APP wird es wie folgt versetzt:

enter image description here

Eine Vorstellung, so dass die Etiketten bleiben immer ausgerichtet?

+0

Unmöglich, von diesen Bits des Codes zu sagen. Wenn der Dialog/form/... SWT Layouts verwendet, werden die 'setBounds' Aufrufe vom Layout überschrieben. –

+0

Hier kann etwas getan werden, damit es nicht wieder überläuft, sondern dass es ausgerichtet bleibt? – BEN

+0

Sie haben uns nicht genug Code gezeigt, um zu wissen, was vor sich geht. Zeig uns ein richtiges [mcve]. –

Antwort

1

Sie scheinen ein GridLayout für das Composite zu verwenden, das diese Conrols enthält. Sie kann nicht verwendet setBounds in einer Composite, die von einem Layout verwaltet wird. Das Layout überschreibt Ihre Grenzen mit den berechneten Grenzen.

Da Sie GridLayout verwenden, sollten Sie GridData Layout-Daten für jedes Ihrer Steuerelemente festlegen. GridData hat viele Felder, mit denen Sie die Positionierung und Größe des Steuerelements steuern können.

Verwandte Themen