加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何正确避免SWT表放大?

发布时间:2020-12-15 04:33:55 所属栏目:Java 来源:网络整理
导读:我有一个简单的SWT程序,如下所示: public static void main(String[] args) { final Display display = new Display(); final Shell shell = new Shell(display); shell.setLayout(new GridLayout(1,false)); shell.setMinimumSize(300,300); // table fina
我有一个简单的SWT程序,如下所示:

public static void main(String[] args) {
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new GridLayout(1,false));
    shell.setMinimumSize(300,300);

    // table
    final Table table = new Table(shell,SWT.BORDER);
    final GridData gridData = new GridData(SWT.FILL,SWT.FILL,true,true);
    gridData.heightHint = 0; // "hack"
    table.setLayoutData(gridData);

    // example data
    for (int i = 0; i < 50; i++) {
        final TableItem item = new TableItem(table,SWT.NONE);
        item.setText("item no." + i);
    }

    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    display.dispose();
}

我期待的 – 我希望桌子完全填满贝壳空间而不改变它的大小. (截图1和3)

问题 – 如果我向表中添加行,表会自动调整大小(shell也是如此). (截图2)

解决方法 – 为了避免这种行为,我添加了一行gridData.heightHint = 0;到代码.但这对我来说似乎是个黑客.

问题 – 添加数据时,避免扩大表(和shell)的正确方法是什么?

问候,winklerrr

截图1

没有数据,表和shell在两个版本中都没有得到调整大小,正确的行为

Empty table (correct)

截图2

随着数据,表和shell的扩大,错误的行为,只有没有黑客

Full table (wrong)

截图3

对于数据,表和shell不会调整大小,添加滚动条,正确的行为,只有黑客

Full table (correct)

解决方法

在向表中添加数据之前的某个时刻调用shell.setSize(int width,int height)?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读