Метод, который вы ищете:
getVisibleRect()
он определен в JComponent, в вашем контексте вы используете его
table1.getVisibleRect().contains(rect)
edit: только что понял, что вы, вероятно, все еще царапаетсяваша голова - даже если все ответы, которые уже даны, технически правильны: -)
По сути, это все о системах координат, то есть месте относительно данного источника.При использовании методов, связанных с местоположением, вы должны знать о системе координат для этого конкретного метода, и вы не можете смешивать разные системы (по крайней мере, не переводя одну или другую).
Но смешивание вы сделали:
// cellRect is in table coordinates
Rectangle cellRect = table.getCellRect(...)
// WRONG!!! use table coordinates in parent sytem
table.getParent().contains(cellRect.getLocation());
Решение состоит в том, чтобы найти систему координат, в которой имеет место местоположение ячейки, как указано выше (или перевести местоположение ячейки в родительскую систему вручную, ноздесь это не нужно), есть методы, которые выполняют перевод:
// returns the visible part of any component in its own coordinates
// available for all components
Rectangle visible = table.getVisibleRect();
// special service method in JViewport, returning the visible portion
// of its single child in the coordinates of the child
Rectangle viewRect = ((Viewport) (table.getParent()).getViewRect();
// both are the same
visible.equals(viewRect)
запрос самой таблицы (в отличие от запроса ее родителя) является предпочтительным, поскольку он не нуждается в знании своего родителя.