use*_*643 2 java code-reuse swing jtable rowcount
我有不同的形式,5个JTable中与行的任意数字,我想对每个一个会告诉我该表行的总数,改变颜色3秒时的行数变化的标签.如果递增,颜色应为绿色,如果递减则为红色.实现这一点的最佳方法是什么,这样我不需要在每个表单中复制太多代码?
基本上,您将一个TableModelListener添加到JTable的模型中并在接收更改事件时,根据需要更新相应的标签
一些代码:
public class TableModelRowStorage
// extends AbstractBean // this is a bean convenience lass of several binding frameworks
// but simple to implement directly
implements TableModelListener {
private int rowCount;
public TableModelRowStorage(TableModel model) {
model.addTableModelListener(this);
this.rowCount = model.getRowCount();
}
@Override
public void tableChanged(TableModelEvent e) {
if (((TableModel) e.getSource()).getRowCount() != rowCount) {
int old = rowCount;
rowCount = ((TableModel) e.getSource()).getRowCount();
doStuff(old, rowCount);
}
}
protected void doStuff(int oldRowCount, int newRowCount) {
// here goes what you want to do - all in pseudo-code
// either directly configuring a label/start timer
label.setText("RowCount: " + newRowCount);
label.setForeground(newRowCount - oldRowCount > 0 ? Color.GREEN : Color.RED);
timer.start();
// or indirectly by firing a propertyChange
firePropertyChange("rowCount", oldRowCount, newRowCount);
}
}
Run Code Online (Sandbox Code Playgroud)