【Java】コンポーネントでキー入力を制御する方法【Swing】
説明
数字だけを入力できるテキストボックスとかを作りたい場合は、
以下のような KeyListerの実装を作成し、
コンポーネントに #addKeyListener してやればよい。
KeyListener実装のソース
NumberInputKeyListener.java
public class NumberInputKeyListener implements KeyListener {
/*
* (non-Javadoc)
*
* @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)
*/
public void keyPressed(KeyEvent e) {
consumeWithoutNum(e);
}
/*
* (non-Javadoc)
*
* @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
*/
public void keyReleased(KeyEvent e) {
consumeWithoutNum(e);
}
/*
* (non-Javadoc)
*
* @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent)
*/
public void keyTyped(KeyEvent e) {
consumeWithoutNum(e);
}
/**
* 数字以外は入力キーを無効にします。
*
* @param e
*/
private void consumeWithoutNum(KeyEvent e) {
if (e.getKeyChar() != '0' && e.getKeyChar() != '1'
&& e.getKeyChar() != '2' && e.getKeyChar() != '3'
&& e.getKeyChar() != '4' && e.getKeyChar() != '5'
&& e.getKeyChar() != '6' && e.getKeyChar() != '7'
&& e.getKeyChar() != '8' && e.getKeyChar() != '9') {
e.consume();
}
}
}