如何将文本包装到GWT CellTable单元格中?

如何将文本包装到GWT CellTable单元格中?,gwt,gwt2,gwt-2.2-celltable,celltable,gwt-celltable,Gwt,Gwt2,Gwt 2.2 Celltable,Celltable,Gwt Celltable,我需要把这一列的文字换行。我的专栏很小。所以,如果我设置列宽,一些字母是不可见的。因为文本的长度大于列的大小。如果文本中有空格,则它会自动换行。因此,我需要包装文本 例如,emailColumn它的值是xxxxxxxxxxxxx@XXXXXXX.com. 我希望结果是一样的xxxxxxxxxxx@x在第一行,下一行为xxxx.xom 有可能吗?我尝试将文本包装到单元格表中,我们可以通过创建自定义列来实现这一点 为单元格表创建一个抽象单元格列,在该单元格中附加html contant,并像下面这

我需要把这一列的文字换行。我的专栏很小。所以,如果我设置列宽,一些字母是不可见的。因为文本的长度大于列的大小。如果文本中有空格,则它会自动换行。因此,我需要包装文本

例如,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);
为名为“WrappedColumn.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;
    }   
}
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;         
   }    
}
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);
    }
}
创建名为“WrapDetailsColumnCell.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;
    }   
}
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;         
   }    
}
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);
    }
}

这对我很有效。试过之后,如果有任何问题,请告诉我。玩得开心。

使用css属性word wrap:break word;见[本][1]。[1] :谢谢你,乔纳斯。但是NetBeans显示了未知属性wordwrap。那么它会支持吗?它是所有主流浏览器都支持的css3属性。嗨,乔纳斯。回答得很好。你太棒了。非常感谢你。另一个保持干净ui的方法是使用文本溢出:省略号;这将添加。。。到最后。然后将标题添加到具有完整值的单元格中。这适用于较长的单元格内容,您希望您的表格看起来统一