4

我正在尝试从表格中删除一行,并将该行下方的所有内容向上移动一行。我一点也不成功。我已经尝试遍历所有单元格(使用Table.getCells())并以各种方式更新它们,但它似乎并没有按照我想要的方式工作。有没有办法做到这一点?

4

4 回答 4

5

Actor您可以像这样删除单元格:

public static void removeActor(Table container, Actor actor) {
    Cell cell = container.getCell(actor);
    actor.remove();
    // remove cell from table
    container.getCells().removeValue(cell, true);
    container.invalidate();
}

这不是很漂亮的解决方案,但它有效

于 2018-03-14T18:36:00.907 回答
2

下一个更清洁的解决方案是:

public void removeTableRow(int row) {

     SnapshotArray<Actor> children = table.getChildren();
     children.ordered = false;

     for (int i = row*COLUMN_NUMBER; i < children.size - COLUMN_NUMBER; i++) {
         children.swap(i, i + COLUMN_NUMBER);
     }

     // Remove last row
     for(int i = 0 ; i < COLUMN_NUMBER; i++) {
         table.removeActor(children.get(children.size - 1));
     }
}
于 2014-02-03T18:51:11.813 回答
1

睡一觉解决了问题!下面的示例从具有 2 列的表中删除第一行,并将所有其他行上移一步。

List<Cell> cells = table.getCells(); 

//Remove contents of first row
cells.get(0).setWidget(null);
cells.get(1).setWidget(null);

//Copy all cells up one row
for (int i = 0; i < cells.size() - 2; i++)
    cells.set(i, cells.get(i + 2));

//Remove the last row
cells.remove(cells.size() - 1);
cells.remove(cells.size() - 1);
于 2013-08-23T13:55:23.043 回答
0

在尝试了所有早期的响应之后,这对我来说效果很好。

    deleteStockButton.addListener(new ChangeListener() {
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            if (stockTableIndex != null) {
                try {
                    Table stockTable = (Table) stockScroll.getActor();
                    List<Actor> cells = new ArrayList<>();
                    for (Cell c : stockTable.getCells().toArray(Cell.class)) {
                        cells.add(c.getActor());
                    }
                    cells.remove(stockTableIndex);

                    stockTable.clearChildren();

                    for (Actor a : cells) {
                        stockTable.row().pad(2);
                        stockTable.add(a).height(TEXT_HEIGHT).left().expandX();
                    }

                    stockTable.layout();

                } catch (Exception e) {
                    e.printStackTrace();
                }
                stockTableIndex = null;
            }
        }
    });
于 2020-06-19T00:58:47.273 回答