我有一个 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/