在 Swing 中使用 KeyListener 的 3 个方法时感到困惑?
Getting confused while using KeyListener's 3 methods in Swing?
我正在尝试构建一个只能接受数字的 textfield
。我尝试了很多次,但我得到了 3 种方法的行为。
这三个方法同时调用,但所有方法 return 对 getKeyCode()
方法的值不同。为什么这些方法 return 有不同的值?还有一件事,当我尝试将 keyListener
添加到 JApplet 时,它不接受键值?为什么?
import java.awt.event.*;
import javax.swing.*;
public class SimpleKey1 extends JApplet implements KeyListener
{
String msg="";
JTextField jTextField;
int x = 10, y = 20;
public void init()
{
addKeyListener(this);
requestFocus();
}
@Override
public void keyPressed(KeyEvent arg0) {
showStatus("Key Pressed");
}
@Override
public void keyReleased(KeyEvent arg0) {
showStatus("Key Released");
}
@Override
public void keyTyped(KeyEvent arg0) {
msg+=arg0.getKeyChar();
repaint();
}
public void paint(Graphics g)
{
g.drawString(msg, x, y);
}
}
改用JFormattedTextField
并提供只接受数字的格式。
因为这个原因不需要写那么多代码。
文档位于 http://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html
我正在尝试构建一个只能接受数字的 textfield
。我尝试了很多次,但我得到了 3 种方法的行为。
这三个方法同时调用,但所有方法 return 对 getKeyCode()
方法的值不同。为什么这些方法 return 有不同的值?还有一件事,当我尝试将 keyListener
添加到 JApplet 时,它不接受键值?为什么?
import java.awt.event.*;
import javax.swing.*;
public class SimpleKey1 extends JApplet implements KeyListener
{
String msg="";
JTextField jTextField;
int x = 10, y = 20;
public void init()
{
addKeyListener(this);
requestFocus();
}
@Override
public void keyPressed(KeyEvent arg0) {
showStatus("Key Pressed");
}
@Override
public void keyReleased(KeyEvent arg0) {
showStatus("Key Released");
}
@Override
public void keyTyped(KeyEvent arg0) {
msg+=arg0.getKeyChar();
repaint();
}
public void paint(Graphics g)
{
g.drawString(msg, x, y);
}
}
改用JFormattedTextField
并提供只接受数字的格式。
因为这个原因不需要写那么多代码。
文档位于 http://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html