2013-06-24 34 views
1

我有一個複合單元,它工作正常,它有一個textinputcell和一個按鈕單元格。然而,當它顯示它將buttoncell放在文本輸入單元格下方時,如圖所示enter image description hereCellTable上的複合單元寬度

下面是使用hascells實現我的compositecel,謝謝!

final HasCell<ObjetoDato,String> celda1=new HasCell<ObjetoDato,String>(){ 
         TextInputCell celda; 

         @Override 
         public Cell<String> getCell() { 
          celda=new TextInputCell(); 

          return celda; 
         } 

         @Override 
         public FieldUpdater<ObjetoDato, String> getFieldUpdater() { 
          return null; 
         } 

         @Override 
         public String getValue(ObjetoDato object) { 
          //new Scripter(object,actual.getComportamiento(),true); 
          return object.getValor(actual.getNombreCampo());  
         } 



        };       
        HasCell<ObjetoDato,String> celda2=new HasCell<ObjetoDato,String>(){ 
         ButtonCell celda; 

         @Override 
         public Cell<String> getCell() { 
          celda=new ButtonCell(); 

          return celda; 
         } 

         @Override 
         public FieldUpdater<ObjetoDato, String> getFieldUpdater() { 
          return new FieldUpdater<ObjetoDato, String>(){ 

           @Override 
           public void update(int index,ObjetoDato object, String value) { 
            new Seleccionador(actual.getClaseRelacion(), actual.getNombreCampo(),object.getValor(actual.getNombreCampo()), object.getIdRelacion(actual.getNombreCampo()), object,tabla,object,actual.getComportamiento()); 

           } 
          }; 
         } 

         @Override 
         public String getValue(ObjetoDato object) { 

          return "..."; 
         } 


        }; 
        //Composite 
        List<HasCell<ObjetoDato,?>> celdas = new LinkedList<HasCell<ObjetoDato,?>>(); 
        celdas.add(celda1); 
        celdas.add(celda2); 
        CompositeCell<ObjetoDato> cell = new CompositeCell<ObjetoDato>(celdas); 

        Column<ObjetoDato,ObjetoDato> columna = new Column<ObjetoDato,ObjetoDato>(cell) { 
          @Override 
            public ObjetoDato getValue(ObjetoDato object) { 
             return object; 
            } 
        }; 

        //columna.setCellStyleNames("columna3puntos"); 
        tabla.agregarColumna(columna,actual.getCaption()); 
+0

究竟是什麼問題?我假設你想把它放在一行中嗎?是否有可能設置yourCellTable.setWidth(「100%」,true)?這將設置固定的佈局,但是...讓我們說太固定了。之後,您可以設置所有列的寬度。那麼你可以這樣做嗎?如果它太多地損害你的設計,那麼這可能不是這樣 – Miroslav

回答

0

你可能想看看你的render()方法。另外如果你的內部單元使用像<div>這樣的塊單元。它將被垂直顯示。所以你可以把它改成<span>。或者你可以添加style =「float:left;」到你div的CSS。我有類似於你的東西。但是,我的是一個2行表的自定義單元格與1列如下圖所示:

+----+ 
| | 
+----+ 
| | 
+----+ 

我用CellList把若干個這些自定義的細胞。 CellList的問題是它垂直顯示它們。所以我不得不重寫CellList以便水平顯示。我修改了CellList的模板以使float:left和我的單元格開始像下面那樣水平渲染:

+----+  +----+ +----+ 
| |  | | | | 
+----+  +----+ +----+ 
| |  | | | | 
+----+  +----+ +----+