【问题标题】:Eclipse Scout Neon table cell mouseoverEclipse Scout Neon 表格单元格鼠标悬停
【发布时间】:2016-09-28 04:23:34
【问题描述】:

如果一列对于全文来说太短,我想知道如何在单元格上实现鼠标悬停。

所以,如果我有固定宽度的列,并且文本太长,如何在单元格中显示整个文本与鼠标悬停。

【问题讨论】:

    标签: row mouseover eclipse-scout


    【解决方案1】:

    您可以通过覆盖

    在任何单元格上动态添加鼠标悬停工具提示

    AbstractTable 中的execDecorateCell(Cell view, ITableRow row, IColumn<?> col) 方法并将您的工具提示文本设置为

    @Override
    protected void execDecorateCell(Cell view, ITableRow row, IColumn<?> col) {
        super.execDecorateCell(view, row, col);
        view.setTooltipText("Hi there: " + view.getText());
    }
    

    很遗憾,这没有考虑您的文本长度是否超过列/单元格的长度。无论如何它都会设置工具提示文本!到目前为止,我不确定是否(或如何)计算(以像素为单位?),如果单元格内的实际字符串长度超过列长度。也许您可以尝试一些方法,将实际字符串长度考虑在内 (java.lang.String.length()),并且仅在给定特定长度时才提供工具提示。

    如果这对你有用,请告诉我!

    最好的问候,
    马蒂亚斯

    【讨论】:

      【解决方案2】:

      当前仅在无法调整列大小时显示表格单元格中截断文本的工具提示。这是有目的的,因为工具提示可能非常烦人。负责这个的代码在文件 Table.js 中:

      scout.Table.prototype._isTruncatedCellTooltipEnabled = function(column) {
        return !this.headerVisible || column.fixedWidth;
      };
      

      如果您不喜欢这种行为,您可以调整 JavaScript 代码。主要有两种方法:

      1. 替换原函数
      2. 扩展表并覆盖函数

      第一种方法是替换实际函数,因此每次创建 scout.Table 时都会使用此函数。使用第二种方法,您需要确保使用您的新表。为此,您需要指定对象类型和构造函数之间的映射,只要使用 scout.create(objectType) 创建对象,就会使用该映射。这通常是按照惯例完成的,所以如果你写 scout.create('Table') 一个新的 scout.Table 将被创建。因为您现在要创建自定义表,所以需要将映射添加到 scout.objectFactories。

      对我来说,第一种方法感觉更像是打补丁,而第二种方法是更清洁的解决方案。第二种解决方案的优点是原始对象保持不变,您至少在理论上仍然可以创建常规表。这就是为什么我建议使用第二种方法。但最终这可能是一个品味问题。

      在这两种方式中,您都需要创建一个或多个 JavaScript 文件,将它们注册到 yourproject-module.js 中,并将此模块包含在您的 index.html 中。文件可能如下所示:

      方法一:

      补丁.js

      scout.Table.prototype._isTruncatedCellTooltipEnabled = function(column) {
        return true;
      };
      

      方法 2

      CustomTable.js

      scout.CustomTable = function() {
        scout.CustomTable.parent.call(this);
      };
      scout.inherits(scout.CustomTable, scout.Table);
      
      /**
       * @override
       */
      scout.CustomTable.prototype._isTruncatedCellTooltipEnabled = function(column) {
        return true;
      };
      

      objectFactories.js

      scout.objectFactories = $.extend(scout.objectFactories, {
        'Table': function() {
          return new scout.CustomTable();
        }
      });
      

      记住:scout JavaScript 代码不是 api,可能随时更改。如果函数将按照您习惯使用 java 的方式重命名,则不会出现编译错误。因此,在添加大量自定义 JavaScript 代码来调整默认行为之前,您应该考虑先打开一个错误,以便可以在 Scout 中修复它。它也可以帮助其他人。

      【讨论】:

        猜你喜欢
        • 2016-07-17
        • 1970-01-01
        • 1970-01-01
        • 2017-03-06
        • 1970-01-01
        • 2016-07-29
        • 2016-09-22
        • 2013-11-23
        • 2012-06-24
        相关资源
        最近更新 更多