2015-07-22 80 views
0

我想在SWT中创建一个对话框。我的代码如下所示:GridLayout和对话框:如何正确对齐项目

Shell dialog = new Shell(dialogShell, SWT.DIALOG_TRIM 
      | SWT.APPLICATION_MODAL); 

    dialog.setSize(800, 500); 
    dialog.setBounds(10, 10, 200, 240); 

    dialog.setText("Dummy dialog for stackoverflow"); 

    GridLayout gridLayout = new GridLayout(4, false); 

    dialog.setLayout(gridLayout); 

    Button btnSave = new Button(dialog, SWT.PUSH | SWT.CENTER); 
    btnSave.setText("Save"); 
    btnSave.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true, 1, 1)); 

    Button btnCancel = new Button(dialog, SWT.PUSH | SWT.CENTER); 
    btnCancel.setText("Cancel"); 
    btnCancel.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true, 1, 
      1)); 

    Tree tree = new Tree(dialog, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); 

    GridData gridData = new GridData(GridData.FILL); 
    gridData.horizontalSpan = 4; 
    gridData.verticalSpan = 10; 

    tree.setLayoutData(gridData); 

    TreeItem item = new TreeItem(tree, 0); 
    item.setText("Item 1"); 
    item = new TreeItem(item, 0); 
    item.setText("Item 2"); 
    item = new TreeItem(item, 0); 
    item.setText("Item 3"); 

    Label lblOne = new Label(dialog, SWT.NONE); 
    lblOne.setText("Label One: "); 

    Text textOne = new Text(dialog, SWT.SINGLE | SWT.BORDER); 
    gridData = new GridData(); 
    gridData.horizontalAlignment = SWT.FILL; 
    gridData.grabExcessHorizontalSpace = true; 
    gridData.horizontalSpan = 3; 
    textOne.setLayoutData(gridData); 

    Label lblTwo = new Label(dialog, SWT.NONE); 
    lblTwo.setText("Label Two: "); 
    gridData = new GridData(); 
    gridData.verticalAlignment = SWT.TOP; 
    lblTwo.setLayoutData(gridData); 

    Text textTwo = new Text(dialog, SWT.SINGLE | SWT.BORDER); 
    gridData = new GridData(); 
    gridData.horizontalAlignment = SWT.FILL; 
    gridData.grabExcessHorizontalSpace = true; 
    gridData.horizontalSpan = 3; 
    textTwo.setLayoutData(gridData); 

    dialog.pack(); 
    dialog.open(); 

结果看起来是这样的: My SWT dialog

我不能够到达下面的“目标”:

  • 放大对话框中的宽度,使得标题文本是完全可读的
  • 放大该树使其至少有八行高
  • 设置一个最小的widt h为Text控件,以便它们在没有数据填充时不会在开始时收缩

感谢您的帮助!

回答

1

使用GridDataheightHintwidthHint值来指定树和文本控件的建议高度和宽度。

例如:

gridData.widthHeight = 200; 
0

请尽量不要使用dialog.pack()而是在开始时给你的元素任意大小。那么你可以在pack()它在一些事件处理程序,当你会看到它适合。另外,我在SWT中没有做任何事,但是你有没有试过minimumWidth属性?