2015-07-22 2 views
0

Я хотел бы создать диалог в SWT. Мой код выглядит следующим образом:GridLayout и Dialog: как правильно выровнять элементы

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

Я не в состоянии достичь следующие «цели»:

  • увеличить диалог в ширину, так что текст заголовка полностью читается
  • увеличить Дерево так, чтобы оно имело по крайней мере восемь строк в высоту
  • установить минимальную ширину h для элементов управления Text, чтобы они не уменьшались в начале, когда данные еще не заполнены

Спасибо за любую помощь!

ответ

1

Используйте значения GridDataheightHint и widthHint, чтобы указать рекомендуемую высоту и ширину для элементов управления деревом и текстом.

Например:

gridData.widthHeight = 200; 
0

Пожалуйста, попробуйте и не используйте dialog.pack() и вместо этого дайте своим элементам произвольные размеры в начале. Тогда вы можете pack() в каком-то обработчике событий, когда увидите, что он подходит. Кроме того, я не делал ничего в SWT некоторое время, но вы пробовали minimumWidth свойства?

Смежные вопросы