1

私は正常に動作する複合セルを持っています.textinputcellとbutton cellがあります. ただし、表示されると、図のようにボタンセルがテキスト入力セルの下に配置されます。

ここに画像の説明を入力

hascells を使用した私の複合セルの実装は次のとおりです。

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());
4

1 に答える 1

0

render() メソッドがどのようになっているのかを確認することをお勧めします。また、内部セルが のようなブロック要素を使用している場合<div>。縦に表示されます。したがって、それを に変更できます<span>。または、style="float:left;" を追加することもできます。あなたのdivのCSSに。私はあなたのものに似たものを持っていました。しかし、私のものは、以下のような1列の2行テーブルのカスタムセルでした:

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

これらのカスタム セルの数を保持するために、CellList を使用しました。CellList の問題は、それらが縦に表示されることです。そのため、水平方向に表示するには、CellList をオーバーライドする必要がありました。CellList のテンプレートを float:left に変更すると、以下のようにセルが水平方向にレンダリングされ始めました。

+----+     +----+   +----+
|    |     |    |   |    |
+----+     +----+   +----+
|    |     |    |   |    |
+----+     +----+   +----+
于 2013-06-25T11:45:27.103 に答える