私は次のコードスニペットを持っています。NatTableはrepaintCellの後で手動リフレッシュが必要ですか?
int index = getEventList().indexOf(myObj);
SelectionLayer selectionLayer = getGlazedListsGridLayer()
.getBodyLayerStack().getSelectionLayer();
getNatTable().repaintCell(0,selectionLayer.getRowIndexByPosition(index));
私は上記のコードを実行すると、私はGUIに表示されたテーブルをクリックした後、影響を受けた細胞のみを塗り替えます。そのコードをコメントアウトしてgetNatTable().refresh();
を使用すると、最初にテーブルをクリックしなくても再描画できます。
GUIに表示されたテーブルをクリックせずにセルを再描画する方法はありますか?このコードが何度も実行される大きなテーブルに対して、refresh()を呼び出さなければならないのは嫌です。
なぜ手動でrepaintCell()を手動で呼び出すのですか? –
私は、その外見上何らかの外部要因のために変化する可能性があるその画像を持っています。 – ekjcfn3902039
具体的には、私は外部コードでコールバックを登録します。コールバックを介して私はオブジェクト(myObjと呼ばれる)を取得し、myObjを使って変更する必要があるセルを決定します。 repaintCell()を呼び出すと、必要なIConfigLabelAccumulatorコードが再実行され、表示する正しいイメージを決定します。 IConfigLabelAccumulatorコードは、myObjを使用して外部サービスを呼び出し、描画するイメージを決定します。イメージはmyObjの外側のものから決定されるため、テーブルに保持されているデータは変更されません。つまり、myObjには内部的な値がありません。 – ekjcfn3902039