Java Swing How to - Check If a Cell Is Visible in JTable








Question

We would like to know how to check If a Cell Is Visible in JTable.

Answer

 /*from   w ww  . j  a  va  2 s. c  o m*/


import java.awt.Point;
import java.awt.Rectangle;

import javax.swing.JTable;
import javax.swing.JViewport;

public class Main {
  public static void main(String[] argv) {
    JTable table = new JTable(10, 5);
    int rowIndex = 1;
    int vColIndex = 2;
    isCellVisible(table, rowIndex, vColIndex);
  }

  public static boolean isCellVisible(JTable table, int rowIndex, int vColIndex) {
    if (!(table.getParent() instanceof JViewport)) {
      return false;
    }
    JViewport viewport = (JViewport) table.getParent();
    Rectangle rect = table.getCellRect(rowIndex, vColIndex, true);
    Point pt = viewport.getViewPosition();
    rect.setLocation(rect.x - pt.x, rect.y - pt.y);
    return new Rectangle(viewport.getExtentSize()).contains(rect);
  }
}