2016-05-30 72 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中修復。它也可以幫助其他人。