在Netbeans GUI Builder中的可编辑JComboBox中获取光标(插入符号)位置

时间:2016-04-12 11:40:09

标签: netbeans cursor jcombobox caret

在JTextField中,我可以使用

找到插入位置
int caretPos = textField.getCaretPosition();

并且显然可以使用:setCaretPosition()

进行设置

我在JTextField和JComboBox上都在监听keyTyped(可编辑),所以我可以过滤掉非数字字符 - InputEvent.consume()

但JComboBox不提供getCaretPosition()方法。这就是问题所在。

1 个答案:

答案 0 :(得分:0)

如果您正在使用Netbeans,那么您已经注意到使用GUI Builder Events对组合框不起作用;因为组合框是复合组件。因此,如果您正在侦听keyTyped事件,那么您必须做过类似的事情:

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

我怀疑你知道将getEditorComponent()转换为JTextField必须是答案,而且它是;这里是语法,请注意括号。

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