• SWT Table列自适应大小


    要实现列自适应大小首先需要保证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);
                }
            });

  • 相关阅读:
    【前端修炼之路】第一话 · 初识前端领域
    正则表达式
    (已导出) hyperv创建ubuntu20.10 ubuntu18.04虚拟机
    win11远程桌面用不了怎么解决
    如何用惯性动作捕捉系统,快速创建数字人三维动画?
    简易SSM框架转账
    Proteus仿真--花样流水灯(仿真文件+程序)
    UnityEditor编辑器扩展-表格功能
    Android Studio 打不开
    Spring 观察者模式 EventListener
  • 原文地址:https://blog.csdn.net/jg_csdn/article/details/128187752