2014-02-14 81 views
3

我想用SWT.WRAP創建一個複選框按鈕。當我調整窗口大小時,應該相應地包裝文本。按鈕SWT SWT.WRAP

我創建了一個代碼片段,其中2個複選框:

1)的文本不換

2)文字不換,但是當窗口大小是不更新

public class GridLayoutSample { 
Display display = new Display(); 
Shell shell = new Shell(display); 

private static final String lorem = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ips"; 

public GridLayoutSample() { 

GridLayout gridLayout = new GridLayout(); 
gridLayout.numColumns = 1; 
gridLayout.makeColumnsEqualWidth = true; 
shell.setLayout(gridLayout); 

Button button = new Button(shell, SWT.CHECK | SWT.WRAP); 
button.setText(lorem); 
button.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL)); 

RowLayout layout = new RowLayout(); 
Composite row = new Composite(shell, SWT.NONE); 
row.setLayout(layout); 
createButton(row, lorem, SWT.CHECK | SWT.WRAP); 

shell.pack(); 
shell.open(); 

while (!shell.isDisposed()) { 
    if (!display.readAndDispatch()) { 
    display.sleep(); 
    } 
} 

display.dispose(); 
} 
public void createButton(Composite parent, String text, int style) { 
    RowData layoutData = new RowData(); 
    layoutData.height = 175; 
    layoutData.width = 175; 
    Button testButton = new Button(parent, style); 
    testButton.setText(text); 
    testButton.setLayoutData(layoutData); 
} 

public static void main(String[] args) { 
    new GridLayoutSample(); 
} 
} 

你能幫我麼?

回答

5

像這樣的東西應該這樣做:

Display      display = new Display(); 
Shell      shell = new Shell(display); 

private static final String lorem = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ips"; 

public GridLayoutSample() 
{ 
    shell.setLayout(new GridLayout(1, false)); 
    Composite row = new Composite(shell, SWT.NONE); 
    row.setLayout(new GridLayout(1, false)); 
    row.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

    createButton(row, lorem, SWT.CHECK | SWT.WRAP); 

    shell.pack(); 
    shell.open(); 

    while (!shell.isDisposed()) 
    { 
     if (!display.readAndDispatch()) 
     { 
      display.sleep(); 
     } 
    } 

    display.dispose(); 
} 

public void createButton(final Composite parent, String text, int style) 
{ 
    final GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true); 
    layoutData.widthHint = 175; 
    final Button testButton = new Button(parent, style); 
    testButton.setText(text); 
    testButton.setLayoutData(layoutData); 

    parent.getParent().addListener(SWT.Resize, new Listener() 
    { 
     @Override 
     public void handleEvent(Event arg0) 
     { 
      layoutData.widthHint = parent.computeSize(SWT.DEFAULT, SWT.DEFAULT).x; 
      parent.pack(); 
     } 
    }); 
} 

public static void main(String[] args) 
{ 
    new GridLayoutSample(); 
} 

它會根據家長的大小調整Button

這就是它看起來像在啓動後:

enter image description here

而經過調整:

enter image description here