public String getToolTipText(MouseEvent event) { /* * This is a Java Swing lesson on how to obtain the coordinates of the current cell * as you hover with the mouse on a JTable. * * You cannot use the renderer component, since it seems that once the table is done * stamping the cells with it, the instance of the renderer is not the one under the mouse * as it will always yield negative coordinates, for example, our debugger showed that this * renderer's coordinates were always (-95,-25)... * * What we did in this case, to show labels for the specific components inside the renderer * was to get the mouse coordinates, and translate its coordinates to the coordinates of the * current Cell Rectangle. * * One interesting gotcha in the process is that you cannot alter the event coordinates and then * try to use event.getPoint() since event.getPoint() will always give you a new instance of Point * so we keep a copy of that Point and then translate that point. * * tags: java, swing, table, get current cell coordinates, get table cell coordinates under mouse */ try { Component[] components = this.getComponents(); Point p = event.getPoint(); int row = table.rowAtPoint(p); int col = table.columnAtPoint(p); Rectangle currentCell = table.getCellRect(row, col, false); p.translate(-currentCell.x, -currentCell.y); for (Component c : components) { JComponent jc = (JComponent) c; if (jc.isVisible() && jc.getBounds().contains(p)) { return jc.getToolTipText(event); } } } catch (Throwable t) { //don't risk painting the table over a tooltip } return super.getToolTipText(event); }
↧
How to obtain the coordinates of the JTable cell a mouse is hovering over, useful for tooltips within cell renderers.
↧