在NetBeans GUI生成器中获取可编辑JComboBox中的光标(插入符号)位置

ru9i0ody  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(165)

在JTextField中,我可以使用以下语句找到插入符号的位置

int caretPos = textField.getCaretPosition();

并且可以明显地设置为:设置光标位置()
我在JTextField和JComboBox(可编辑)上侦听keyTyped,以便可以过滤掉非数字字符- InputEvent.consume()。
但是JComboBox没有提供getCaretPosition()方法,这就是问题所在。

3npbholx

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();

相关问题