【发布时间】:2016-09-28 04:23:34
【问题描述】:
如果一列对于全文来说太短,我想知道如何在单元格上实现鼠标悬停。
所以,如果我有固定宽度的列,并且文本太长,如何在单元格中显示整个文本与鼠标悬停。
【问题讨论】:
标签: row mouseover eclipse-scout
如果一列对于全文来说太短,我想知道如何在单元格上实现鼠标悬停。
所以,如果我有固定宽度的列,并且文本太长,如何在单元格中显示整个文本与鼠标悬停。
【问题讨论】:
标签: row mouseover eclipse-scout
您可以通过覆盖
在任何单元格上动态添加鼠标悬停工具提示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()),并且仅在给定特定长度时才提供工具提示。
如果这对你有用,请告诉我!
最好的问候,
马蒂亚斯
【讨论】:
当前仅在无法调整列大小时显示表格单元格中截断文本的工具提示。这是有目的的,因为工具提示可能非常烦人。负责这个的代码在文件 Table.js 中:
scout.Table.prototype._isTruncatedCellTooltipEnabled = function(column) {
return !this.headerVisible || column.fixedWidth;
};
如果您不喜欢这种行为,您可以调整 JavaScript 代码。主要有两种方法:
第一种方法是替换实际函数,因此每次创建 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 中修复它。它也可以帮助其他人。
【讨论】: