JBPopup () { JPanel contentPane = new JPanel(new BorderLayout()); if (myAutoselect) { myChooserComponent.autoSelect(); } if (myCloseOnEnter || myItemChosenRunnable != null) { myChooserComponent.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { if (UIUtil.isActionClick(e, MouseEvent.MOUSE_RELEASED) && !UIUtil.isSelectionButtonDown(e) && !e.isConsumed()) { if (myCloseOnEnter) { closePopup(e, true); } else { myItemChosenRunnable.run(); } } } }); } registerClosePopupKeyboardAction(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), false); if (myCloseOnEnter) { registerClosePopupKeyboardAction(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), true); } else if (myItemChosenRunnable != null) { registerKeyboardAction(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), __ -> myItemChosenRunnable.run()); } for (KeyStroke keystroke : myAdditionalKeystrokes) { registerClosePopupKeyboardAction(keystroke, true); } myPreferableFocusComponent = myChooserComponent.buildFinalComponent(); myScrollPane = myChooserComponent.createScrollPane(); myScrollPane.getViewport().setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); Insets viewportPadding = UIUtil.getListViewportPadding(StringUtil.isNotEmpty(myAd)); ((JComponent)myScrollPane.getViewport().getView()).setBorder( BorderFactory.createEmptyBorder(viewportPadding.top, viewportPadding.left, viewportPadding.bottom, viewportPadding.right)); JComponent contentComponent = myChooserComponent.hasOwnScrollPane() ? myPreferableFocusComponent : myScrollPane; if (myContentSplitter != null) { myContentSplitter.setFirstComponent(contentComponent); addCenterComponentToContentPane(contentPane, myContentSplitter); } else { addCenterComponentToContentPane(contentPane, contentComponent); } if (myNorthComponent != null) { addNorthComponentToContentPane(contentPane, myNorthComponent); } if (mySouthComponent != null) { addSouthComponentToContentPane(contentPane, mySouthComponent); } if (myEastComponent != null) { addEastComponentToContentPane(contentPane, myEastComponent); } if (ExperimentalUI.isNewUI()) { applyInsets(contentComponent); } ComponentPopupBuilder builder = JBPopupFactory.getInstance().createComponentPopupBuilder(contentPane, myPreferableFocusComponent); for (JBPopupListener each : myListeners) { builder.addListener(each); } builder .setDimensionServiceKey(null, myDimensionServiceKey, myUseForXYLocation) .setRequestFocus(myRequestFocus) .setResizable(myForceResizable) .setMovable(myForceMovable) .setTitle(myTitle) .setAlpha(myAlpha) .setFocusOwners(myFocusOwners) .setCancelKeyEnabled(myCancelKeyEnabled) .setAdText(myAd, myAdAlignment) .setAdvertiser(myAdvertiser) .setKeyboardActions(myKeyboardActions) .setMayBeParent(myMayBeParent) .setLocateWithinScreenBounds(true) .setCancelOnOtherWindowOpen(myCancelOnOtherWindowOpen) .setModalContext(myModalContext) .setCancelOnWindowDeactivation(myCancelOnWindowDeactivation) .setCancelOnClickOutside(myCancelOnClickOutside) .setCouldPin(myCouldPin) .setOkHandler(myItemChosenRunnable); if (myCancelCallback != null) { builder.setCancelCallback(myCancelCallback); } Predicate<KeyEvent> keyEventHandler = myChooserComponent.getKeyEventHandler(); if (keyEventHandler != null) { builder.setKeyEventHandler(keyEventHandler::test); } if (myCommandButton != null) { builder.setCommandButton(myCommandButton); } if (myMinSize != null) { builder.setMinSize(myMinSize); } if (mySettingsButtons != null) { builder.setSettingButtons(mySettingsButtons); } myPopup = builder.createPopup(); return myPopup; }