// Overridden for performance reasons. ----> @Override public boolean isOpaque() { Color back = getBackground(); Component p = getParent(); if (Objects.nonNull(p)) { p = p.getParent(); } // p should now be the JTable. boolean colorMatch = Objects.nonNull(back) && Objects.nonNull(p) && back.equals(p.getBackground()) && p.isOpaque(); return !colorMatch && super.isOpaque(); }
public static Color getBackgroundColor(Component component) { if (component == null) return null; if (component instanceof BackgroundPainter) { ComponentPainter painter = ((BackgroundPainter) component).getComponentPainter(); if (painter != null) { Color color = painter.getColor(component); if (color != null) return color; } } return component.isOpaque() ? component.getBackground() : getBackgroundColor(component.getParent()); }