ComboPopup () { if (comboBox.getClientProperty(DarculaJBPopupComboPopup.CLIENT_PROP) != null) { return new DarculaJBPopupComboPopup<>(comboBox) { @Override public void configureList(@NotNull JList<Object> list) { super.configureList(list); list.setBackground(UIManager.getColor("TextField.background")); } @Override public void customizeListRendererComponent(JComponent component) { super.customizeListRendererComponent(component); component.setBorder(getList().getComponentOrientation().isLeftToRight() ? JBUI.Borders.empty(0, 5, 0, 1) : JBUI.Borders.empty(0, 1, 0, 5)); } }; } return new CustomComboPopup(comboBox) { @Override protected void configurePopup() { super.configurePopup(); addPopupMenuListener(new PopupMenuListenerAdapter() { @Override public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { comboBox.repaint(); } }); setBorder(UIManager.getBorder("PopupMenu.border")); } @Override protected void configureList() { super.configureList(); list.setBackground(UIManager.getColor("TextField.background")); } @Override protected void customizeListRendererComponent(JComponent component) { super.customizeListRendererComponent(component); component.setBorder(list.getComponentOrientation().isLeftToRight() ? JBUI.Borders.empty(0, 5, 0, 1) : JBUI.Borders.empty(0, 1, 0, 5)); } @Override public void show(Component invoker, int x, int y) { int i = DarculaUIUtil.isTableCellEditor(comboBox) ? 0 : 1; int yOffset = JBUIScale.scale(i); super.show(invoker, x, y - yOffset); } }; }