按钮中的SWT SWT.WRAP

mat*_*ias 3 java checkbox layout swt button

我想用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();
}
}
Run Code Online (Sandbox Code Playgroud)

你能帮我么?

Baz*_*Baz 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();
}
Run Code Online (Sandbox Code Playgroud)

它将Button根据父母的大小调整大小.

这是它开始后的样子:

在此输入图像描述

调整大小后:

在此输入图像描述