在JTextField中,我可以使用以下语句找到插入符号的位置
int caretPos = textField.getCaretPosition();
并且可以明显地设置为:设置光标位置()我在JTextField和JComboBox(可编辑)上侦听keyTyped,以便可以过滤掉非数字字符- InputEvent.consume()。但是JComboBox没有提供getCaretPosition()方法,这就是问题所在。
3npbholx1#
如果您使用的是Netbeans,那么您会注意到,使用GUI生成器事件对组合框不起作用;因为组合框是一个复合组件。因此,如果要侦听keyTyped事件,您必须执行以下操作:
jCombo.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() { @Override public void keyTyped(KeyEvent evt) { //do stuff! } });
我猜想您可能认为将getEditorComponent()转换为JTextField一定是解决办法,事实也确实如此;语法如下,注意括号。
caretPos = ( (JTextField)jCombo.getEditor().getEditorComponent() ).getCaretPosition();
1条答案
按热度按时间3npbholx1#
如果您使用的是Netbeans,那么您会注意到,使用GUI生成器事件对组合框不起作用;因为组合框是一个复合组件。因此,如果要侦听keyTyped事件,您必须执行以下操作:
我猜想您可能认为将getEditorComponent()转换为JTextField一定是解决办法,事实也确实如此;语法如下,注意括号。