@Override
    public void keyPressed(KeyEvent evt) {
      if (evt.isConsumed()) return;
      Component comp = getFocusOwner();
      if (evt.getKeyCode() == KeyEvent.VK_ENTER && enterEnabled) {
        while (comp != null) {
          if (comp instanceof JComboBox) {
            JComboBox<?> combo = (JComboBox<?>) comp;
            if (combo.isEditable()) {
              Object selected = combo.getEditor().getItem();
              if (selected != null) combo.setSelectedItem(selected);
            }

            if (combo.isPopupVisible()) {
              evt.consume();
              combo.setPopupVisible(false);
            }
            return;
          }
          // TODO: add other classes that need custom key handling here.
          comp = comp.getParent();
        }
        evt.consume();
        ok();
      } else if (evt.getKeyCode() == KeyEvent.VK_ESCAPE || isCloseBufferShortcut(evt)) {
        evt.consume();
        if (comp instanceof JComboBox) {
          JComboBox<?> combo = (JComboBox<?>) comp;
          if (combo.isPopupVisible()) combo.setPopupVisible(false);
          else cancel();
        } else cancel();
      }
    }
  private void handleNavigationKeys(boolean suggest, int next, int sel, int max) {
    if (!suggest && !comboBox.isPopupVisible()) {
      comboBox.setPopupVisible(true);
      return;
    }

    if (comboBox.getItemCount() > 0) {
      if (next < 0) {
        next = 0;
      }

      if (next > max) {
        next = max;
      }

      if (next != sel) {
        if (suggest) {
          suggestionList.setSelectedIndex(next);
        } else {
          comboBox.setPopupVisible(true);
          comboBox.setSelectedIndex(next);
        }
      }
      textEditor.requestFocus();
    }
  }
Exemple #3
0
    @Override
    public void keyPressed(KeyEvent keyEvent) {
      // don't popup on action keys (cursor movements, etc...)
      if (keyEvent.isActionKey()) {
        return;
      }

      // don't popup if the combobox isn't visible anyway
      if (comboBox.isDisplayable() && !comboBox.isPopupVisible()) {
        int keyCode = keyEvent.getKeyCode();
        // don't popup when the user hits shift,ctrl or alt
        if (keyCode == KeyEvent.VK_SHIFT
            || keyCode == KeyEvent.VK_CONTROL
            || keyCode == KeyEvent.VK_ALT) return;
        // don't popup when the user hits escape (see issue #311)
        if (keyCode == KeyEvent.VK_ENTER || keyCode == KeyEvent.VK_ESCAPE) return;
        comboBox.setPopupVisible(true);
      }
    }