javax.swing.text.JTextComponent#addKeyListener ( )源码实例Demo

下面列出了javax.swing.text.JTextComponent#addKeyListener ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: netbeans   文件: InstantRenameAction.java
RenameImplementation (
    DatabaseItem        databaseItem,
    JTextComponent      editor,
    ASTNode             node
) throws BadLocationException {
    this.editor = editor;
    document = (NbEditorDocument) editor.getDocument ();
    elements = getUssages (databaseItem, node);
    MarkOccurrencesSupport.removeHighlights (editor);
    if (!elements.isEmpty ()) {
        SwingUtilities.invokeLater (new Runnable () {
            public void run () {
                highlights = new ArrayList<Highlight> ();
                Highlighting highlighting = Highlighting.getHighlighting (document);
                Iterator<Element> it = elements.iterator ();
                while (it.hasNext ()) {
                    Element element = it.next ();
                    ASTItem item = element.getItem ();
                    highlights.add (highlighting.highlight (item.getOffset (), item.getEndOffset (), getHighlightAS ()));
                }
            }
        });
    }
    document.addDocumentListener (this);
    editor.addKeyListener (this);
}
 
源代码2 项目: darklaf   文件: DarkTextFieldUI.java
@Override
protected void installListeners() {
    super.installListeners();
    JTextComponent c = getComponent();
    c.addMouseListener(this);
    c.addMouseMotionListener(mouseMotionListener);
    c.addKeyListener(keyListener);
}
 
private void addComboBoxListener(JComboBox comboBox) {
    JTextComponent text = ((JTextComponent) comboBox.getEditor().getEditorComponent());
    text.addKeyListener(new KeyAdapter() {

        @Override
        public void keyReleased(KeyEvent event) {
            //updatePreview();
        }
    });
}
 
源代码4 项目: netbeans   文件: HintsUI.java
private void register() {
    JTextComponent comp = getComponent(); 
    if (comp == null) {
        return;
    }
    comp.addKeyListener (this);
    comp.addCaretListener(this);
}
 
源代码5 项目: netbeans   文件: PopupManager.java
/** Creates a new instance of PopupManager */
public PopupManager(JTextComponent textComponent) {
    this.textComponent = textComponent;
    keyListener = new PopupKeyListener();
    textComponent.addKeyListener(keyListener);
    componentListener = new TextComponentListener();
    textComponent.addComponentListener(componentListener);
}
 
源代码6 项目: netbeans   文件: CompletionLayoutPopup.java
@Override
public void setEditorComponent(JTextComponent comp) {
    JTextComponent thisComp = getEditorComponent();
    boolean change = thisComp != comp;
    if (thisComp != null && change) {
        thisComp.removeKeyListener(getChKeyListener());
    }
    super.setEditorComponent(comp);
    if (comp != null && change) {
        comp.addKeyListener(getChKeyListener());
    }
}
 
源代码7 项目: netbeans   文件: AbbrevDetection.java
private AbbrevDetection(JTextComponent component) {
    this.component = component;
    component.addCaretListener(this);
    doc = component.getDocument();
    if (doc != null) {
        listenOnDoc();
    }

    String mimeType = DocumentUtilities.getMimeType(component);
    if (mimeType != null) {
        mimePath = MimePath.parse(mimeType);
        prefs = MimeLookup.getLookup(mimePath).lookup(Preferences.class);
        prefs.addPreferenceChangeListener(WeakListeners.create(PreferenceChangeListener.class, this, prefs));
    }
    
    // Load the settings
    preferenceChange(null);
    
    component.addKeyListener(this);
    component.addPropertyChangeListener(this);
    
    surroundsWithTimer = new Timer(0, new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            // #124515, give up when the document is locked otherwise we are likely
            // to cause a deadlock.
            if (!DocumentUtilities.isReadLocked(doc)) {
                showSurroundWithHint();
            }
        }
    });
    surroundsWithTimer.setRepeats(false);
}
 
源代码8 项目: netbeans   文件: InstantRefactoringPerformer.java
public InstantRefactoringPerformer(final JTextComponent target, int caretOffset, InstantRefactoringUI ui) {
    releaseAll();
    this.target = target;
    this.ui = ui;
    doc = target.getDocument();

    MutablePositionRegion mainRegion = null;
    List<MutablePositionRegion> regions = new ArrayList<>(ui.getRegions().size());

    for (MutablePositionRegion current : ui.getRegions()) {
        // TODO: type parameter name is represented as ident -> ignore surrounding <> in rename
        if (isIn(current, caretOffset)) {
            mainRegion = current;
        } else {
            regions.add(current);
        }
    }

    if (mainRegion == null) {
        throw new IllegalArgumentException("No highlight contains the caret.");
    }

    regions.add(0, mainRegion);

    region = new SyncDocumentRegion(doc, regions);

    if (doc instanceof BaseDocument) {
        BaseDocument bdoc = ((BaseDocument) doc);
        bdoc.addPostModificationDocumentListener(this);
        
        UndoableWrapper wrapper = MimeLookup.getLookup("text/x-java").lookup(UndoableWrapper.class);
        if(wrapper != null) {
            wrapper.setActive(true, this);
        }

        UndoableEdit undo = new CancelInstantRenameUndoableEdit(this);
        for (UndoableEditListener l : bdoc.getUndoableEditListeners()) {
            l.undoableEditHappened(new UndoableEditEvent(doc, undo));
        }
    }

    target.addKeyListener(this);

    target.putClientProperty(InstantRefactoringPerformer.class, this);
    target.putClientProperty("NetBeansEditor.navigateBoundaries", mainRegion); // NOI18N
	
    requestRepaint();
    
    target.select(mainRegion.getStartOffset(), mainRegion.getEndOffset());
    
    span = region.getFirstRegionLength();
    compl = new CompletionLayout(this);
    compl.setEditorComponent(target);
    final KeyStroke OKKS = ui.getKeyStroke();
    target.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(OKKS, OKActionKey);
    Action OKAction = new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent ae) {
            if(registry.contains(InstantRefactoringPerformer.this)) {
                doFullRefactoring();
                target.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).remove(OKKS);
                target.getActionMap().remove(OKActionKey);
            } else {
                target.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).remove(OKKS);
                target.getActionMap().remove(OKActionKey);
            }
        }
    };
    target.getActionMap().put(OKActionKey, OKAction);
    final KeyStroke keyStroke = ui.getKeyStroke();
    compl.showCompletion(ui.getOptions(), caretOffset, Bundle.INFO_PressAgain(getKeyStrokeAsText(keyStroke)));
    
    registry.add(this);
}
 
源代码9 项目: netbeans   文件: InstantRenamePerformer.java
/** Creates a new instance of InstantRenamePerformer */
private InstantRenamePerformer(JTextComponent target, Set<Token> highlights, int caretOffset) throws BadLocationException {
    this.target = target;
    doc = target.getDocument();

    MutablePositionRegion mainRegion = null;
    List<MutablePositionRegion> regions = new ArrayList<MutablePositionRegion>();

    for (Token h : highlights) {
        // type parameter name is represented as ident -> ignore surrounding <> in rename
        int delta = h.id() == JavadocTokenId.IDENT && h.text().charAt(0) == '<' && h.text().charAt(h.length() - 1) == '>' ? 1 : 0;
        Position start = NbDocument.createPosition(doc, h.offset(null) + delta, Bias.Backward);
        Position end = NbDocument.createPosition(doc, h.offset(null) + h.length() - delta, Bias.Forward);
        MutablePositionRegion current = new MutablePositionRegion(start, end);
        
        if (isIn(current, caretOffset)) {
            mainRegion = current;
        } else {
            regions.add(current);
        }
    }

    if (mainRegion == null) {
        throw new IllegalArgumentException("No highlight contains the caret.");
    }

    regions.add(0, mainRegion);

    region = new SyncDocumentRegion(doc, regions);

    if (doc instanceof BaseDocument) {
        BaseDocument bdoc = ((BaseDocument) doc);
        bdoc.setPostModificationDocumentListener(this);

        UndoableEdit undo = new CancelInstantRenameUndoableEdit(this);
        for (UndoableEditListener l : bdoc.getUndoableEditListeners()) {
            l.undoableEditHappened(new UndoableEditEvent(doc, undo));
        }
    }

    target.addKeyListener(this);

    target.putClientProperty(InstantRenamePerformer.class, this);
    target.putClientProperty("NetBeansEditor.navigateBoundaries", mainRegion); // NOI18N
	
    requestRepaint();
    
    target.select(mainRegion.getStartOffset(), mainRegion.getEndOffset());
    
    span = region.getFirstRegionLength();
    
    registry.add(this);
    sendUndoableEdit(doc, CloneableEditorSupport.BEGIN_COMMIT_GROUP);
}
 
源代码10 项目: netbeans   文件: InstantRenamePerformer.java
/** Creates a new instance of InstantRenamePerformer */
   private InstantRenamePerformer(JTextComponent target, Set<OffsetRange> highlights, int caretOffset) throws BadLocationException {
this.target = target;
doc = target.getDocument();

MutablePositionRegion mainRegion = null;
List<MutablePositionRegion> regions = new ArrayList<MutablePositionRegion>();

for (OffsetRange h : highlights) {
    Position start = NbDocument.createPosition(doc, h.getStart(), Bias.Backward);
    Position end = NbDocument.createPosition(doc, h.getEnd(), Bias.Forward);
    MutablePositionRegion current = new MutablePositionRegion(start, end);
    
    if (isIn(current, caretOffset)) {
           mainRegion = current;
    } else {
           regions.add(current);
    }
}

if (mainRegion == null) {
       Logger.getLogger(InstantRenamePerformer.class.getName()).warning("No highlight contains the caret (" + caretOffset + "; highlights=" + highlights + ")"); //NOI18N
       // Attempt to use another region - pick the one closest to the caret
       if (regions.size() > 0) {
           mainRegion = regions.get(0);
           int mainDistance = Integer.MAX_VALUE;
           for (MutablePositionRegion r : regions) {
               int distance = caretOffset < r.getStartOffset() ? (r.getStartOffset()-caretOffset) : (caretOffset-r.getEndOffset());
               if (distance < mainDistance) {
                   mainRegion = r;
                   mainDistance = distance;
               }
           }
       } else {
           return;
       }
}

regions.add(0, mainRegion);

region = new SyncDocumentRegion(doc, regions);

       if (doc instanceof BaseDocument) {
           ((BaseDocument) doc).addPostModificationDocumentListener(this);
       }
       
target.addKeyListener(this);

       target.putClientProperty("NetBeansEditor.navigateBoundaries", mainRegion); // NOI18N
target.putClientProperty(InstantRenamePerformer.class, this);

requestRepaint();
       
       target.select(mainRegion.getStartOffset(), mainRegion.getEndOffset());
   }
 
public void searchHelper() {
    final DefaultComboBoxModel model = new DefaultComboBoxModel(bookingList);
    combo_booking.setModel(model);

    JTextComponent editor = (JTextComponent) combo_booking.getEditor().getEditorComponent();
    editor.addKeyListener(new KeyAdapter() {

        @Override
        public void keyTyped(KeyEvent evt) {

            if (evt.getKeyChar() == KeyEvent.VK_ENTER) {
                String details = (String) combo_booking.getSelectedItem();
                //System.out.println(details);
                if (!details.contains(",")) {
                    JOptionPane.showMessageDialog(null, "no booking found, try adding a new booking");
                } else {
                    bookingId = Integer.parseInt(details.substring(details.lastIndexOf(",") + 1));
                    //tf_bookingId.setText(bookinId+"");
                    // A if condition should be here, but not required as the last line has no chance of returning -1.

                }

            }

            /// suggestion generation
            String value = "";
            try {
                value = combo_booking.getEditor().getItem().toString();
                // System.out.println(value +" <<<<<<<<<<<<<");

            } catch (Exception ex) {
            }
            if (value.length() >= 2) {

                // System.out.println("working");
                bookingComboFill(bookingdB.bookingsReadyForOrder(value));
                // bookingdB.flushAll();
            }

        }
    });
}
 
源代码12 项目: Java-Simple-Hotel-Management   文件: OrderPanel.java
public void searchHelper()
{
     final DefaultComboBoxModel model = new DefaultComboBoxModel(bookingList);
    combo_booking.setModel(model);
    
    
    JTextComponent editor = (JTextComponent) combo_booking.getEditor().getEditorComponent();
    editor.addKeyListener(new KeyAdapter() {

        @Override
        public void keyTyped(KeyEvent evt)
        {
           
            if(evt.getKeyChar() == KeyEvent.VK_ENTER)
            {
                String details = (String) combo_booking.getSelectedItem();
                //System.out.println(details);
                if(!details.contains(","))
                {
                    JOptionPane.showMessageDialog(null, "no booking found, try adding a new booking");
                }
                else
                {
                    int bookinId = Integer.parseInt(details.substring(details.lastIndexOf(",")+1));
                    tf_bookingId.setText(bookinId+"");
                    // A if condition should be here, but not required as the last line has no chance of returning -1.
                    
                }
                
            }
            
            
            
            /// suggestion generation
            
             String value = "";
            try {
                value = combo_booking.getEditor().getItem().toString();
                   // System.out.println(value +" <<<<<<<<<<<<<");

            } catch (Exception ex) {
            }
            if (value.length() >= 2) {

               // System.out.println("working");
                bookingComboFill(db.bookingsReadyForOrder(value));
                db.flushAll();
            }

        }
    });
}
 
private void searchCustomerHelper() {
    final DefaultComboBoxModel model = new DefaultComboBoxModel(customerList);
    combo_users.setModel(model);

    JTextComponent editor = (JTextComponent) combo_users.getEditor().getEditorComponent();
    editor.addKeyListener(new KeyAdapter() {
        @Override
        public void keyTyped(KeyEvent evt) {
            //System.out.println((int)KeyEvent.VK_ACCEPT);
            // .............. 1st part for searching a customer, user should hit enter if he finds a user. 
            if (evt.getKeyChar() == KeyEvent.VK_ENTER) {
                String details = (String) combo_users.getSelectedItem();
                //System.out.println(details);
                if (!details.contains(",")) {
                    JOptionPane.showMessageDialog(null, "no users found, try adding a new user");
                } else {
                    int customerId = Integer.parseInt(details.substring(details.lastIndexOf(",") + 1));
                    // A if condition should be here, but not required as the last line has no chance of returning -1.

                    System.out.println(".>> " + customerId);
                    ResultSet userDB = db.searchAnUser(customerId);
                    displayTextField(userDB);
                    existingCustomer = true;

                }

            }

            //................. end of first part, start of 2nd part,  for suggesting saved customer data list
            String value = "";
            try {
                value = combo_users.getEditor().getItem().toString();
                //System.out.println(value +" <<<<<<<<<<<<<");

            } catch (Exception ex) {
            }
            if (value.length() >= 2) {

                //System.out.println("working");
                userComboFill(db.searchUser(value));
            }

        }
    });

}
 
源代码14 项目: cropplanning   文件: AutoCompleteDecorator.java
/**
 * Enables automatic completion for the given JComboBox. The automatic
 * completion will be strict (only items from the combo box can be selected)
 * if the combo box is not editable.
 * @param comboBox a combo box
 * @param stringConverter the converter used to transform items to strings
 */
public static void decorate(final JComboBox comboBox, final ObjectToStringConverter stringConverter) {
    boolean strictMatching = !comboBox.isEditable();
    // has to be editable
    comboBox.setEditable(true);
    // fix the popup location
    AquaLnFPopupLocationFix.install(comboBox);

    // configure the text component=editor component
    JTextComponent editorComponent = (JTextComponent) comboBox.getEditor().getEditorComponent();
    final AbstractAutoCompleteAdaptor adaptor = new ComboBoxAdaptor(comboBox);
    final AutoCompleteDocument document = new AutoCompleteDocument(adaptor, strictMatching, stringConverter);
    decorate(editorComponent, document, adaptor);
    
    // show the popup list when the user presses a key
    final KeyListener keyListener = new KeyAdapter() {
        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_ESCAPE) return;
                comboBox.setPopupVisible(true);
            }
        }
    };
    editorComponent.addKeyListener(keyListener);
    
    if (stringConverter!=ObjectToStringConverter.DEFAULT_IMPLEMENTATION) {
        comboBox.setEditor(new AutoCompleteComboBoxEditor(comboBox.getEditor(), stringConverter));
    }
    
    // Changing the l&f can change the combobox' editor which in turn
    // would not be autocompletion-enabled. The new editor needs to be set-up.
    comboBox.addPropertyChangeListener("editor", new PropertyChangeListener() {
        public void propertyChange(PropertyChangeEvent e) {
          	ComboBoxEditor editor = (ComboBoxEditor) e.getNewValue();
          	if (editor!=null && editor.getEditorComponent()!=null) {
                if (!(editor instanceof AutoCompleteComboBoxEditor) 
                    && stringConverter!=ObjectToStringConverter.DEFAULT_IMPLEMENTATION) {
                    comboBox.setEditor(new AutoCompleteComboBoxEditor(editor, stringConverter));
                    // Don't do the decorate step here because calling setEditor will trigger
                    // the propertychange listener a second time, which will do the decorate
                    // and addKeyListener step.
                } else {
                    decorate((JTextComponent) editor.getEditorComponent(), document, adaptor);
                    editor.getEditorComponent().addKeyListener(keyListener);
                }
          	}
        }
    });
}