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

时间:2012-06-21 12:15:25

标签: gwt gwt2 gwt-2.2-celltable celltable gwt-celltable

我需要包装该列的文本。我的列大小很小。因此,如果我设置列宽,则一些字母不可见。由于文本的长度大于列大小。如果文本中有空格则会自行封装。所以我需要包装文本。

for eg. emailColumn its value is xxxxxxxxxxxxx@XXXXXXX.com. 

我希望第一行中的结果为xxxxxxxxxxx@x                         xxxx.xom在下一行。

有可能吗?如果是。 谁能帮我?它迫切需要

提前致谢, Gnik

1 个答案:

答案 0 :(得分:-1)

我尝试在单元格表中包装文本,我们可以通过创建自定义列来实现此目的。

为单元格表创建一个抽象单元格列,在该单元格中追加html,并将列添加到单元格表中。

  1. 在主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);
    
  2. 创建一个名为'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;
        }   
    }
    
  3. 使用名为“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;         
       }    
    }
    
  4. 创建名为'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);
        }
    }
    
  5. 这对我很有帮助。试过这个之后,如果你得到,请告诉我任何问题。玩得开心。