Predicate<Color> (JComponent c) { Component view = c instanceof JViewport ? ((JViewport)c).getView() : c; Color selection1 = view instanceof JTree ? UIUtil.getTreeSelectionBackground(true) : view instanceof JList ? UIUtil.getListSelectionBackground(true) : view instanceof JTable ? UIUtil.getTableSelectionBackground(true) : view instanceof JTextComponent ? ((JTextComponent)view).getSelectionColor() : view instanceof JMenuBar || view instanceof JMenu ? UIManager.getColor("Menu.selectionBackground") : null; Color selection2 = view instanceof JTree ? UIUtil.getTreeSelectionBackground(false) : view instanceof JList ? UIUtil.getListSelectionBackground(false) : view instanceof JTable ? UIUtil.getTableSelectionBackground(false) : null; return color -> color == selection1 || color == selection2; }