【问题标题】:"Fixing" the first few columns in an SWT table to prevent them from scrolling horizontally“修复” SWT 表中的前几列以防止它们水平滚动
【发布时间】:2009-03-02 16:22:23
【问题描述】:

我们已经使用 SWT 树表实现了基于表的编辑器。它几乎可以满足我们的要求,只是我们无法找到一种方法来确保在用户水平滚动时前几列保持在其位置(以便人们可以识别正在编辑的行)。

有许多第三方表格控件在不同程度上不完整或被遗弃,还有一个显示如何使用两个表格的 sn-p(垂直滚动时它们会不同步)。

解决这个问题的最佳方法是什么?

【问题讨论】:

    标签: java swt


    【解决方案1】:

    这个“官方”SWT snippet 可以做你想做的事,至少在我的机器上是这样——它不会在垂直滚动时不同步。但价格是第二个滚动条 - 很难看。为了防止这种情况,您可以在左表的构造函数中添加样式SWT.NO_SCROLL

    要改进这件事,您必须在两个表中添加 SWT.Traverse 上的侦听器,如果用户使用键导航,它会同步它们,如下所示:

      leftTable.addListener(SWT.Traverse, new Listener() {
    
         public void handleEvent( Event event ) {
            rightTable.setTopIndex(leftTable.getTopIndex());
         }
      });
    

    我不会使用另一个 Table 实现,因为您失去了使用 SWT 的最大优势:使用本机小部件,它在每个操作系统中看起来和感觉都“正确”。如果您无论如何都想这样做,来自 Nebula 项目的Grid 比 alpha 标签所暗示的要成熟得多。不过,不知道它是否能做你想做的事。

    【讨论】:

      【解决方案2】:

      “同步问题”仅出现在基于 MacO 的 SWT 上。如果您的目标平台是 windows,那么给定的 SWT-Snippet 应该没有问题。将有更多的监听器在两个表上注册,以同步所有发生的事件(折叠、展开、鼠标滚动等)

      【讨论】:

        猜你喜欢
        • 2013-09-20
        • 1970-01-01
        • 1970-01-01
        • 2012-10-04
        • 2015-08-09
        • 2019-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多