私のクラスは DefaultTableModel から拡張されました
私は試します:
super.removeRow(...);
と
this.removeRow(...);
なぜ両方とも機能するのですか?
私のクラスは DefaultTableModel から拡張されました
私は試します:
super.removeRow(...);
と
this.removeRow(...);
なぜ両方とも機能するのですか?
superスーパー (親) タイプの実装を参照します。
this存在する場合は現在の型の実装を参照し、存在しない場合は継承ツリーを検索します。と同じsuperです。
クラスの拡張方法によってはDefaultTableModel、同じメソッドを呼び出している可能性があります。
答えではありませんがthis.whatever、ほとんどの複雑な Swing GUI では綴りがかなり間違っている可能性があります
super.removeRow(...);
と
this.removeRow(...);
あるべきです(避けるべき私の見解....)
myTableModel.removeRow()- 例えば((DefaultTableModel) table.getModel()).removeRow(row);
または XxxTableModel でオーバーライドします
public void removeRowAt(int row) {
実際には、同じメソッド、つまりremoveRowあなたのケースの親クラスで呼び出しています。
子クラスでオーバーライドすることにした場合にのみ、次のremoveRowように呼び出すことができますsuper.removeRow()。
@Override
void removeRow() {
// call parent class's removeRow
super.removeRow()
// rest of implementation
}