@Override
	public void setUI(ComboBoxUI ui) {

		int oldColumns = getColumns();

		super.setUI(ui);

		// This gets called during construction and during theming changes.  It always
		// creates a new editor and any listeners or documents set on the current editor are
		// lost.  So to combat this, we install the pass through listeners here instead of
		// in the init() method. We also reset the document if the client ever called the
		// setDocument() method.

		installPassThroughListeners();

		if (document != null) {
			setDocument(document);
		}

		// HACK ALERT:  see setEnterKeyForwarding(boolean)
		ActionMap am = getActionMap();
		if (am != null) {
			defaultSystemEnterForwardingAction = am.get("enterPressed");
			am.put("enterPressed", new AbstractAction() {
				@Override
				public void actionPerformed(ActionEvent e) {
					if (forwardEnter) {
						defaultSystemEnterForwardingAction.actionPerformed(e);
					}
				}
			});
		}

		// As mentioned above, the default editor gets replaced.  In that case, restore the columns
		// if the client has set the value.
		if (oldColumns > 0) {
			JTextField tf = getTextField();
			tf.setColumns(oldColumns);
		}
	}
Construct a new GhidraComboBox and populate a default model with the given items.
@param items the items
Ghidra/Framework/Docking/src/main/java/docking/widgets/combobox/GhidraComboBox.java