• 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);
                }
            });

  • 相关阅读:
    java.lang.ClassNotFoundException:如何解决
    ajax(Springmvc实现和注册提示效果)
    Butterfly主题的应用
    Fastjson 结合 jdk 原生反序列化的利用手法 ( Aliyun CTF )
    PyQt学习随笔:QStackedWidget堆叠窗口属性与使用
    maven创建项目三种方式
    Python---元组---字典---集合
    linux 硬盘坏道检测
    超越 ChatGPT-4,谷歌结合 AlphaGo 技术的多模态大模型 Gemini 已小范围内测
    Pygame中监控鼠标动作的方法
  • 原文地址:https://blog.csdn.net/jg_csdn/article/details/128187752