在JTextField中,我可以使用
找到插入位置int caretPos = textField.getCaretPosition();
并且显然可以使用:setCaretPosition()
进行设置我在JTextField和JComboBox上都在监听keyTyped(可编辑),所以我可以过滤掉非数字字符 - InputEvent.consume()。
但JComboBox不提供getCaretPosition()方法。这就是问题所在。
答案 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();