我使用Shell
进行了以下测试MigLayout
我想创建一个简单的表单(左侧标签,右侧文本字段)。
标签应占用所需的空间,文本应自动增长到父组合的右边缘。
在我向文本字段添加大文本之前,这很有效。然后,文本字段将扩展到父组合的边缘:
如果文字太长,如何配置右栏以在右边缘停止生长?
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import net.miginfocom.swt.MigLayout;
public class TestShell {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setSize(400, 200);
shell.setLayout(new GridLayout());
Composite composite = new Composite(shell, SWT.BORDER);
composite.setLayoutData(new GridData(200, 100));
composite.setLayout(new MigLayout("fillx"));
Label label = new Label(composite, SWT.NONE);
label.setText("LABEL");
Text text = new Text(composite, SWT.BORDER);
text.setLayoutData("growx, pushx");
// text.setText("TEXT");
text.setText("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
使用GridLayout
,这可以正常工作:
composite.setLayout(new GridLayout(2, false));
...
text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
我有没有办法让MigLayout
表现得像GridLayout
,但有所有其他MigLayout
功能呢?