已经尝试了几种不同的方法,但到目前为止没有成功。只是想知道我是否遗漏了什么。我有一个 JSpinner,它是日历旁边的 DateSelector 小部件的一个组件。如果用户更改 JSpinner 中的任何文本而不是使用 Calendar 控件或 JSpinner 上下箭头,我将尝试触发验证方法。
以下是我尝试过的不同方法:
jSpinner1.addKeyListener(kl);
jSpinner1.getEditor().addKeyListener(kl);
((JSpinner.DefaultEditor) jSpinner1.getEditor().getTextField().addKeyListener(kl);
那里的任何人对我做错了什么有任何想法?谢谢
更新 道歉,我应该说我已经向附加到 JSpinner 的 JSpinnerDateModel 添加了一个 ChangeListener。像这样:
ChangeListener changeListener = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
dateChanged();
}
};
jSpinnerDateModel.addChangeListener(changeListener);
KeyListener keyListener = new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyChar());
dateChanged();
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
};
((JSpinner.DefaultEditor) jSpinner1.getEditor()).getTextField().addKeyListener(
keyListener);
谢谢
坦率