2016-04-12 13 views
0

In einer JTextField ich die Position der Einfügemarke mitHolen Sie den Cursor (Caret) Position in einem bearbeitbaren JComboBox in Netbeans GUI Builder

int caretPos = textField.getCaretPosition(); 

finden und offensichtlich eingestellt kann es mit: setCaretPosition()

I Ich höre auf keyTyped auf JTextField und JComboBox (editierbar), so dass ich nicht-numerische Zeichen - InputEvent.consume() herausfiltern kann.

Die Methode getCaretPosition() wird jedoch nicht von JComboBox bereitgestellt. Das ist das Problem.

Antwort

0

Wenn Sie NetBeans verwenden, werden Sie bemerkt haben, dass die Verwendung der GUI Builder Events für ein Kombinationsfeld nicht funktioniert. weil ein Kombinationsfeld eine zusammengesetzte Komponente ist. So müssen Sie so etwas wie dies getan haben, wenn Sie für keyTyped Ereignisse gerade hören:

jCombo.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() { 
    @Override 
    public void keyTyped(KeyEvent evt) { 
     //do stuff! 
    } 
}); 

Ich vermute, Sie haben eine Idee, dass getEditorComponent(), um JTextField Gießen muss die Antwort sein, und es ist; Hier ist die Syntax, notieren Sie die Klammern.

caretPos = ((JTextField)jCombo.getEditor().getEditorComponent()).getCaretPosition();