Note that there are some explanatory texts on larger screens.

plurals
  1. POSWT - Wrap label within a composite
    text
    copied!<p>I have <code>ScrolledComposite</code> which allows only vertical scrolling. (heighthint = 400)</p> <p>Within this ScrolledComposite, I have another <code>CompositeA</code> (height may exceed 400 for scrolling) to store all other widgets.</p> <p>I have a very long label (with <code>SWT.WRAP</code> enabled). But instead of wrapping, it is always showing in a single line. I want this label to wrap according to the width of its parent (<code>CompositeA</code>)</p> <p>I forgot to add that this <code>CompositeA</code> is a 2 column 'GridLayout' with <code>makeColumnsEqualWidth = true</code></p> <p>EDIT: This is my code.</p> <pre><code>public void createPartControl(Composite parent) { // TODO Auto-generated method stub Display display = parent.getDisplay(); toolkit = new FormToolkit(display); form = toolkit.createForm(parent); form.setText("ABC"); Composite body = form.getBody(); TableWrapLayout layout = new TableWrapLayout(); layout.numColumns = 2; body.setLayout(layout); Label header1 = toolkit.createLabel(body, "ABC: "); Font font = new Font(display, "Arial", 11, SWT.BOLD); header1.setFont(font); Label header2 = toolkit.createLabel(body, "XYZ", SWT.WRAP); font = new Font(display, "Arial", 11, SWT.NONE); header2.setFont(font); TableWrapData wd = new TableWrapData(TableWrapData.FILL_GRAB); header2.setLayoutData(wd); form.getBody().setBackground( form.getBody().getDisplay() .getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); // Scrolled composite ScrolledComposite sc = new ScrolledComposite(body, SWT.BORDER_SOLID | SWT.V_SCROLL); sc.setAlwaysShowScrollBars(true); sc.setBackground(new Color(display, 50,255,155)); wd = new TableWrapData(TableWrapData.FILL); wd.heightHint = 360; wd.colspan = 2; wd.grabHorizontal = false; sc.setLayoutData(wd); sc.setLayout(new TableWrapLayout()); Composite innerComposite = toolkit.createComposite(sc); sc.setContent(innerComposite); innerComposite.setLayout(new TableWrapLayout()); innerComposite.setBackground(new Color(display, 255,50,50)); Section section = toolkit.createSection(innerComposite, Section.DESCRIPTION | Section.TITLE_BAR | Section.EXPANDED); wd = new TableWrapData(TableWrapData.FILL); wd.maxWidth = 600; // don't want to hardcode this value section.setLayoutData(wd); section.setText("Section"); section.setDescription("A not so long description......................"); // Composite for Section Composite sectionClient = toolkit.createComposite(section); layout = new TableWrapLayout(); layout.numColumns = 2; layout.makeColumnsEqualWidth = true; sectionClient.setLayout(layout); toolkit.createButton(sectionClient, "Button 1", SWT.RADIO); Label rightDesc = toolkit .createLabel( sectionClient, "A very long long long long long long long long long long long long long long long long long long long long desc that needs wrapping", SWT.WRAP); font = new Font(display, "Arial", 10, SWT.ITALIC); rightDesc.setFont(font); wd = new TableWrapData(); wd.rowspan = 2; rightDesc.setLayoutData(wd); Combo comboDropDown = new Combo(sectionClient, SWT.DROP_DOWN | SWT.BORDER); comboDropDown.setText("DDL"); comboDropDown.add("1"); comboDropDown.add("2"); comboDropDown.add("3"); Label lineBreak = toolkit.createSeparator(sectionClient, SWT.SEPARATOR | SWT.HORIZONTAL); wd = new TableWrapData(TableWrapData.FILL); wd.colspan = 2; lineBreak.setLayoutData(wd); /***********************/ toolkit.createButton(sectionClient, "Button 2", SWT.RADIO); Label rightDesc2 = toolkit .createLabel( sectionClient, "A long long long long long long long long long long long long long long long long long long long long desc that needs wrapping", SWT.WRAP); font = new Font(display, "Arial", 10, SWT.ITALIC); rightDesc2.setFont(font); wd = new TableWrapData(TableWrapData.FILL); wd.rowspan = 3; rightDesc2.setLayoutData(wd); toolkit.createLabel(sectionClient, "Desc", SWT.WRAP); toolkit.createText(sectionClient, "hello world", SWT.NONE); section.setClient(sectionClient); innerComposite.pack(); } </code></pre> <p>If you run it, you can see a green scrolledcomposite and a red composite. I want the red composite width to fill to the width of the scrolledcomposite relatively without hardcoding maxWidth = 600.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload