Eclipse Scout Neon table 鼠标悬停单元格
Eclipse Scout Neon table cell mouseover
我想知道如何在单元格上实现鼠标悬停,如果列对于全文来说太短。
所以,如果我有固定宽度的列,而文本太长,如何在单元格中通过鼠标悬停显示整个文本。
您可以通过覆盖
在任何单元格上动态添加鼠标悬停工具提示
execDecorateCell(Cell view, ITableRow row, IColumn<?> col)
AbstractTable
中的方法并将工具提示文本设置为
@Override
protected void execDecorateCell(Cell view, ITableRow row, IColumn<?> col) {
super.execDecorateCell(view, row, col);
view.setTooltipText("Hi there: " + view.getText());
}
不幸的是,如果您的文本长度超过 column/cell 的长度,这不会考虑。它会在任何情况下设置工具提示文本!到目前为止,我不确定是否(或如何)计算(以像素为单位?),如果单元格内的实际字符串长度超过了列长度。也许您可以尝试一些考虑实际字符串长度的方法 (java.lang.String.length()
),并且仅在给定特定长度时才提供工具提示。
如果这对你有用,请告诉我!
此致,
马蒂亚斯
table 单元格中截断文本的工具提示目前仅在无法调整列大小时显示。这是有意为之的,因为工具提示可能非常烦人。负责此的代码在文件 Table.js:
中
scout.Table.prototype._isTruncatedCellTooltipEnabled = function(column) {
return !this.headerVisible || column.fixedWidth;
};
如果您不喜欢这种行为,您可以调整 JavaScript 代码。主要有两种方式:
- 替换原来的功能
- 扩展 table 并覆盖函数
使用第一种方法替换实际函数,因此每次创建 scout.Table 时都会使用此函数。对于第二种方法,您需要确保使用了新的 table。为此,您需要指定对象类型和构造函数之间的映射,只要使用 scout.create(objectType) 创建对象,就会使用该映射。这通常是按照惯例完成的,因此如果您编写 scout.create('Table') 将创建一个新的 scout.Table。因为您现在想要创建自定义 table,所以您需要将映射添加到 scout.objectFactories。
对我来说,第一种方法更像是打补丁,而第二种方法是一种更简洁的解决方案。第二种解决方案的优点是原始对象保持不变,至少在理论上,您仍然可以创建常规 tables。这就是为什么我建议使用第二种方法。但最终这可能是一个品味问题。
在这两种方式中,您需要创建一个或多个 JavaScript 文件,将它们注册到您的项目-module.js 并将此模块包含在您的 index.html 中。这些文件可能如下所示:
方法一:
patches.js
scout.Table.prototype._isTruncatedCellTooltipEnabled = function(column) {
return true;
};
方法二
自定义Table.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 代码来调整默认行为之前,您应该考虑先打开一个错误,以便它可以在 Scout 中修复。它也可以帮助其他人。
我想知道如何在单元格上实现鼠标悬停,如果列对于全文来说太短。
所以,如果我有固定宽度的列,而文本太长,如何在单元格中通过鼠标悬停显示整个文本。
您可以通过覆盖
在任何单元格上动态添加鼠标悬停工具提示execDecorateCell(Cell view, ITableRow row, IColumn<?> col)
AbstractTable
中的方法并将工具提示文本设置为
@Override
protected void execDecorateCell(Cell view, ITableRow row, IColumn<?> col) {
super.execDecorateCell(view, row, col);
view.setTooltipText("Hi there: " + view.getText());
}
不幸的是,如果您的文本长度超过 column/cell 的长度,这不会考虑。它会在任何情况下设置工具提示文本!到目前为止,我不确定是否(或如何)计算(以像素为单位?),如果单元格内的实际字符串长度超过了列长度。也许您可以尝试一些考虑实际字符串长度的方法 (java.lang.String.length()
),并且仅在给定特定长度时才提供工具提示。
如果这对你有用,请告诉我!
此致,
马蒂亚斯
table 单元格中截断文本的工具提示目前仅在无法调整列大小时显示。这是有意为之的,因为工具提示可能非常烦人。负责此的代码在文件 Table.js:
中scout.Table.prototype._isTruncatedCellTooltipEnabled = function(column) {
return !this.headerVisible || column.fixedWidth;
};
如果您不喜欢这种行为,您可以调整 JavaScript 代码。主要有两种方式:
- 替换原来的功能
- 扩展 table 并覆盖函数
使用第一种方法替换实际函数,因此每次创建 scout.Table 时都会使用此函数。对于第二种方法,您需要确保使用了新的 table。为此,您需要指定对象类型和构造函数之间的映射,只要使用 scout.create(objectType) 创建对象,就会使用该映射。这通常是按照惯例完成的,因此如果您编写 scout.create('Table') 将创建一个新的 scout.Table。因为您现在想要创建自定义 table,所以您需要将映射添加到 scout.objectFactories。
对我来说,第一种方法更像是打补丁,而第二种方法是一种更简洁的解决方案。第二种解决方案的优点是原始对象保持不变,至少在理论上,您仍然可以创建常规 tables。这就是为什么我建议使用第二种方法。但最终这可能是一个品味问题。
在这两种方式中,您需要创建一个或多个 JavaScript 文件,将它们注册到您的项目-module.js 并将此模块包含在您的 index.html 中。这些文件可能如下所示:
方法一:
patches.js
scout.Table.prototype._isTruncatedCellTooltipEnabled = function(column) {
return true;
};
方法二
自定义Table.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 代码来调整默认行为之前,您应该考虑先打开一个错误,以便它可以在 Scout 中修复。它也可以帮助其他人。