2016-05-30 84 views

回答

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()),并且只给出一定的长度的工具提示。

让我知道,如果这是适合你的!

最好的问候,
马蒂亚斯

1

在表格单元格中的文本被截断的提示目前只表示如果无法调整列。这是通过目的完成的,因为工具提示可能非常烦人。负责该代码,这是在文件Table.js:

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

如果你不喜欢这种行为,你可以调整的JavaScript代码。主要有两种方式这样做:

  1. 更换原有的功能
  2. 在扩展表并重写功能

替换为你实际功能的第一种方法,所以每次侦察。表被创建使用这个函数。使用第二种方法,您需要确保使用新表。为了做到这一点,你需要指定对象类型和构造函数之间的映射关系,无论何时使用scout.create(objectType)创建对象。这通常是按照惯例完成的,所以如果你写scout.create('Table')一个新的侦察器。表将被创建。因为你现在想创建一个自定义表格,所以你需要添加映射到scout.objectFactories。

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

在这两种方式中,您都需要创建一个或多个JavaScript文件,将它们注册到yourproject-module.js中,并将此模块包含在index.html中。这些文件看起来是这样的:

方法1:

补丁。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(); 
    } 
}); 

记住:侦察兵JavaScript代码是不是API,并可以随时更改。如果将函数重命名为Java,那么您将不会收到编译错误。因此,在添加大量自定义JavaScript代码来调整默认行为之前,您应该首先考虑打开一个bug,以便它可以在Scout中修复。它也可以帮助其他人。