java - JTable 添加行自下而上 - 逐行添加的行应出现在最后一行的底部,但所有行都应底部对齐

标签 java swing

我有一个 Java swing 中的 JTable,需要底部对齐。

就像在普通表格中一样,当将一行添加到表格时,它会放置在顶部,当添加下一行时,它会添加到其下方,依此类推。

我想做的是将新行放在表格的底部。添加新行时,我希望将新行放置在底部,并将上一行向上移动。这样,行看起来向上移动。 基本上,行应该粘在底部。

有什么想法可以做到这一点吗?

最佳答案

您可以使用装饰器模式。假设有一个名为 TableModelDecorator 的类,它装饰一个 TableModel,您可以实现:

public class TableEmptyReverseRowsModel extends TableModelDecorator {

private int minimumRows;

public TableEmptyReverseRowsModel(final TableModel realModel, 
                            final int minimumRows) {
    super(realModel);

    this.minimumRows = minimumRows;
}

public int getRowCount() {
    int realCount = model.getRowCount();        
    return realCount < minimumRows ? minimumRows : realCount;
}


public boolean isCellEditable(int rowIndex, int columnIndex) {
    int diff = minimumRows - model.getRowCount();

    if (diff > 0) {
        if (rowIndex < diff) {
            return false;
        } else {
            return model.isCellEditable(rowIndex - diff, columnIndex);
        }
    } else {
        return model.isCellEditable(rowIndex, columnIndex);
    }
}

public Object getValueAt(int rowIndex, int columnIndex) {
    int diff = minimumRows - model.getRowCount();

    if (diff > 0) {
        if (rowIndex < diff) {
            return null;
        } else {
            return model.getValueAt(rowIndex - diff, columnIndex);
        }
    } else {
        return model.getValueAt(rowIndex, columnIndex);
    }
}

public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
    int diff = minimumRows - model.getRowCount();

    if (diff > 0) {
        if (rowIndex < diff) {

        } else {
            super.setValueAt(aValue, rowIndex - diff, columnIndex);
        }
    } else {
        super.setValueAt(aValue, rowIndex, columnIndex);
    }
}

}

注意必须处理空值的单元格渲染器;)

再见!

关于java - JTable 添加行自下而上 - 逐行添加的行应出现在最后一行的底部,但所有行都应底部对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3881317/

相关文章:

java - Swing GUI 不响应输入

java - 如何防止定时器锁定我的小程序?

java - 使用 Spring 问题制作带有菜单栏的 Swing 框架

java - 关于数组问题(查找重复项)的问题

java - 将元素添加到数组列表并测试该数字是否已存在

java - 如何手动创建 Spring Data Rest 实体响应格式

java - 对话框中的文本丢失

java - Jfreechart XYPlot,如何将图例绘制到绘图区?

java - 构造方法重载Java

对 Sharepoint 2010 oData 的 Java HTTP 调用失败