Fra*_*ank 5 java swing keylistener listener jspinner
已经尝试了一些不同的方法,但到目前为止没有成功.只是想知道我是否遗漏了什么.我有一个JSpinner,它是一个DateSelector小部件的组件和一个日历.我试图在用户更改JSpinner中的任何文本而不是使用Calendar控件或JSpinner向上和向下箭头时触发验证方法.
以下是我尝试过的不同方法:
jSpinner1.addKeyListener(kl);
jSpinner1.getEditor().addKeyListener(kl);
((JSpinner.DefaultEditor) jSpinner1.getEditor().getTextField().addKeyListener(kl);
Run Code Online (Sandbox Code Playgroud)
那里的任何人都对我做错了什么有任何想法?谢谢
更新 道歉,我应该说我已经将一个ChangeListener添加到附加到JSpinner的JSpinnerDateModel.像这样:
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);
Run Code Online (Sandbox Code Playgroud)
谢谢
坦率
dog*_*ane 13
如果要禁用键盘编辑,请执行以下操作:
JFormattedTextField tf = ((JSpinner.DefaultEditor)spinner.getEditor()).getTextField();
tf.setEditable(false);
Run Code Online (Sandbox Code Playgroud)
要侦听关键事件,您需要在文本字段中添加侦听器.这对我有用:
((JSpinner.DefaultEditor)spinner.getEditor()).getTextField().addKeyListener(new KeyListener(){
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("PRESSED!");
}
@Override
public void keyTyped(KeyEvent e) {
}
});
Run Code Online (Sandbox Code Playgroud)
JSpinners 自己处理 KeyEvents,但它们向外界触发 ChangeEvents。添加 ChangeListener 应该允许您执行您希望的验证。
另请参阅:检测微调器值更改(Java 教程)
| 归档时间: |
|
| 查看次数: |
5686 次 |
| 最近记录: |