2012-06-21 52 views
0

我需要包裝該列的文本。我的列大小很小。所以如果我設置列寬一些字母不可見。由於文本的長度大於列大小。如果文本中有空格,那麼它會自動包裝。所以我需要包裝文字。如何包裝GWT CellTable單元格內的文本?

for eg. emailColumn its value is [email protected] 

我希望得到的結果在第一行[email protected]xxxx.xom下一行。

可能嗎?如果是。 任何人都可以幫助我嗎?它迫切

由於提前, Gnik

+1

使用CSS屬性word-wrap:break-word; 參見[這裏] [1]。 [1]:http://stackoverflow.com/questions/499137/css-how-can-i-force-a-long-string-without-any-blank-to-be-wrapped- in-xul-和 – jonasr

+0

謝謝Jonasr。但是NetBeans顯示了Unknown屬性自動換行。它會支持嗎? – Prince

+1

它是由所有主流瀏覽器支持的css3屬性。 http://www.w3schools.com/cssref/css3_pr_word-wrap.asp – jonasr

回答

-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); 
        } 
    } 
    

這是爲我工作很好。試過後,如果你知道,請告訴我任何問題。玩得開心。

相關問題