我需要包装列的文本。我的专栏很小。所以如果我设置列宽,一些字母是不可见的。由于文本的长度大于列大小。如果文本中有空格,则它会自动换行。所以我需要包装文本。
例如,emailColumn 的值为 xxxxxxxxxxxxx@XXXXXXX.com。
我希望结果xxxxxxxxxxx@x
与第一行和xxxx.xom
下一行一样。
可能吗?
我需要包装列的文本。我的专栏很小。所以如果我设置列宽,一些字母是不可见的。由于文本的长度大于列大小。如果文本中有空格,则它会自动换行。所以我需要包装文本。
例如,emailColumn 的值为 xxxxxxxxxxxxx@XXXXXXX.com。
我希望结果xxxxxxxxxxx@x
与第一行和xxxx.xom
下一行一样。
可能吗?
我尝试将文本包装在单元格表中,我们可以通过创建自定义列来实现。
为单元格表创建一个抽象单元格列,在该单元格中附加 html contant 并将列添加到单元格表中,如下所示。
将此代码添加到您的主 java 文件中,该文件包含单元格表并将下面的代码粘贴到必要的位置。
WrappedColumn<T> textDetail = new WrappedColumn<T>() {
// This is method in wrapped details column java file.
public WrapDetails getValue(T object) {
return new WrapDetails( T.<your method1 for wrap text>(), T.<your method2 for wrap text>());
}
};
<your cell table>.addColumn(textDetail);
创建名为“WrapDetails.java”的新 java 文件以呈现动态数据并粘贴以下代码。
public class WrapDetails extends Composite {
String mail_id;
String website;
public WrapDetails(String id, String site) {
this.mail_id = id;
this.website = site;
}
}
为名为“WrappedColumn.java”的换行文本列创建新的 java 文件并粘贴以下代码。
public abstract class WrappedColumn<T> extends Column<T, WrapDetails> {
public WrappedColumn() {
super(new WrapDetailsColumnCell());
}
/**
* Return the passed-in object.
* @param object The value to get
*/
@Override
public WrapDetails getValue(T object) {
return null;
}
}
创建名为“WrapDetailsColumnCell.java”的新 java 文件并粘贴以下代码。
public class WrapDetailsColumnCell extends AbstractCell<WrapDetails> implements Cell<WrapDetails>{
String mail_id, website;
/**
* Add this constructor, if you want click event for this column.
*/
public WrapDetailsColumnCell() {
super("click", "keydown");
}
/**
* This method provides style for your wrap data
*
*/
@Override
public void render(Context context, WrapDetails value, SafeHtmlBuilder sb) {
sb.appendHtmlConstant("<div><table width='100%'>");
sb.appendHtmlConstant("<tr><td><div style='your style here'>"+mail_id+"</div></td></tr>");
sb.appendHtmlConstant("<tr><td><div style='your style here'>"+website+"</div></td></tr>");
sb.appendHtmlConstant("</table></div>");
}
/**
* This method update cell value on click event.
*
*/
@Override
public void onBrowserEvent(Context context, Element parent,WrapDetails value, NativeEvent event, ValueUpdater<FaxDetails> valueUpdater) {
super.onBrowserEvent(context, parent, value, event, valueUpdater);
setValue(context, parent, value);
valueUpdater.update(value);
}
}
它对我很有效。试过这个之后,如果你有任何问题,请告诉我。玩得开心。