【SWT】 如何设置 JFace 的 Dialog 的大小?

时间:2021-09-25 22:22:22
继承 JFace 的 Dialog ,制作自己的对话框时

发现它会自己适应组件调整初始大小。(类似Swing的pack()方法)

我希望设置自己的大小,但在createDialogArea(Composite parent)方法中

用getShell().setSize()设置后发现有问题。

setSize() 语句后的所有要添加的组件都不往上添加了。


======================== Dialog代码如下 ===================================
/**
 * 类名称 [PurposeConfiger]
 * 创建日期 2005-3-3
 * @author 一品狐 (创建者)
 * 
 * 功能描述:用途信息配置窗口
 */

import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;



public class PurposeConfiger extends Dialog {
    private Shell shell = null;
    private Text text = null; /**** 其实我是想让这个文本框显示多行 ****/
    
    public PurposeConfiger(Shell parentShell) {
        super(parentShell);
    }


    protected Control createDialogArea(Composite parent) {
        Shell shell = this.getShell();
        shell.setText("配置[用途]预制信息");
        shell.setStze(300,300); /*** 次语句后的所有要添加的组件都不添加了 ****//
        
        GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 1;
        gridLayout.horizontalSpacing = 10;
        gridLayout.marginHeight = 5;
        gridLayout.marginWidth = 5;
        gridLayout.makeColumnsEqualWidth = true;
        parent.setLayout(gridLayout);
        {
            Label inf = new Label(parent, SWT.NONE);
            inf.setText("预制用途信息,每行一个");
            GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
            gridData.horizontalSpan = 1;
            inf.setLayoutData(gridData);
        }
        {
            Text text = new Text(parent, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
            GridData gridData = new GridData(GridData.FILL_HORIZONTAL
                                           | GridData.FILL_VERTICAL);
            gridData.horizontalSpan = 1;
            gridData.verticalSpan = 5;
            text.setLayoutData(gridData);
        }
        return parent;
    }
    
    protected int getShellStyle() {
        return super.getShellStyle() | SWT.RESIZE;
    }
}

5 个解决方案

#1


原来不是没有添加,是无法显示

用鼠标调节大小后就显示出来了,

但如何才能让它自动刷新呢??

#2


UP

#3


用鼠标调节大小后就显示出来了,

但如何才能让它自动刷新呢??

===================
用了UpdateUI() 么?

#4


是 SWT !

#5


又自己解决了…… 每次都这样。

你们连探讨一下的勇气都没有么?

真是的……

#1


原来不是没有添加,是无法显示

用鼠标调节大小后就显示出来了,

但如何才能让它自动刷新呢??

#2


UP

#3


用鼠标调节大小后就显示出来了,

但如何才能让它自动刷新呢??

===================
用了UpdateUI() 么?

#4


是 SWT !

#5


又自己解决了…… 每次都这样。

你们连探讨一下的勇气都没有么?

真是的……