SWT Table列自适应大小
创始人
2024-03-20 18:12:24

要实现列自适应大小首先需要保证Table根据窗口拖动而改变大小。

Window中提供setShellStyle可以设置外壳样式。

构造一个新的自定义器对话框,在构造函数中添加setShellStyle(getShellStyle() | SWT.RESIZE);即可改变自定义对话框大小,如:

 getShellStyle()返回外壳样式位。默认值为SWT.CLOSE|SWT.MIN|SWT.MAX|SWT.RESIZE
子类应该调用setShellStyle来改变这个值,而不是重写此方法。

设置父级容器,包含table

设置table的布局样式,样式位new GridData(int)来调整控制填充单元格水平和垂直和以适应剩余的水平和垂直空间。GridData.FILL_BOTH,表示水平和垂直方向都填充完全。等同new GridData(SWT.FILL, SWT.FILL, true, true)方法。

设置列自适应大小。

//新建一列

TableColumn tcxValue = new TableColumn(table, SWT.None, 1);
tcxValue.setText(Messages.getString("value"));

//初始化列的宽度
 tcxValue.setWidth(200);

//监听事件,改变表格大小时触发改变列的宽度

// 当控件被移动或调整大小时触发
 table.addControlListener(new ControlListener() {
            @Override
            public void controlResized(ControlEvent e) {
                int width = table.getClientArea().width;
                TableColumn column = table.getColumn(1);
                column.setWidth(width - 100);
            }
            
            @Override
            public void controlMoved(ControlEvent e) {
                
            }
        });

也可以使用一下方式:

table.addListener(SWT.Resize, new Listener() {
            
            @Override
            public void handleEvent(Event event) {
                int width = table.getClientArea().width;
                TableColumn column = table.getColumn(1);
                column.setWidth(width - 100);
            }
        });

相关内容

热门资讯

澜起科技股份有限公司关于H股挂... 证券代码:688008 证券简称:澜起科技 公告编号:2026-010澜起科技股份有限公司关于H股...
上海北特科技集团股份有限公司关... 证券代码:603009 证券简称:北特科技 公告编号:2026-010上海北特科技集团股份有限公司...
厦门优迅芯片股份有限公司关于新... 证券代码:688807 证券简称:优迅股份 公告编号:2026-005厦门优迅芯片股份有限公司关于...
江苏徐州:“石上史诗”有了创新...   光明日报记者 苏雁 杜倩 光明日报通讯员 陆金玉  汉画像石,是汉代最具代表性的艺术形式,承载着...
聪明大脑+安检查验双前置 探秘... (来源:千龙网)这几天,APEC“中国年”首场正式活动正在广州举行。亚太地区海关组织也举办了相关活动...