다음 코드 스 니펫이 있습니다.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