我想在窗口中显示从键盘中输入的字符,但无论怎么输入都只显示Enter,这是为什么呢?是不是getKeyText方法有问题?
代码如下,已经把getKeyText方法标出来了。import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class J_Keyboard extends JFrame
{
String m_string="";
public J_Keyboard()
{
super("Example of Keyboard event handling");
addFocusListener(new FocusListener()
{
public void focusGained(FocusEvent e)
{
System.out.println("Get focus!\n");
}
public void focusLost(FocusEvent e)
{
System.out.println("Lose focus\n");
}
}
);
addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
m_string=e.getKeyText(10); //×××××是不是这里调用getKeyText(10)方法出了问题。
repaint();
}
}
);
setSize(250,200);
setVisible(true);
}
public void paint(Graphics g)
{
Dimension d=getMaximumSize();
g.clearRect(0, 0, d.width, d.height);
g.drawString(m_string, 120,55);
}
public static void main(String []args)
{
JFrame app=new J_Keyboard();
Container cp=app.getContentPane();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
代码如下,已经把getKeyText方法标出来了。import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class J_Keyboard extends JFrame
{
String m_string="";
public J_Keyboard()
{
super("Example of Keyboard event handling");
addFocusListener(new FocusListener()
{
public void focusGained(FocusEvent e)
{
System.out.println("Get focus!\n");
}
public void focusLost(FocusEvent e)
{
System.out.println("Lose focus\n");
}
}
);
addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
m_string=e.getKeyText(10); //×××××是不是这里调用getKeyText(10)方法出了问题。
repaint();
}
}
);
setSize(250,200);
setVisible(true);
}
public void paint(Graphics g)
{
Dimension d=getMaximumSize();
g.clearRect(0, 0, d.width, d.height);
g.drawString(m_string, 120,55);
}
public static void main(String []args)
{
JFrame app=new J_Keyboard();
Container cp=app.getContentPane();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
public static String getKeyText(int keyCode) {
if (keyCode >= VK_0 && keyCode <= VK_9 ||
keyCode >= VK_A && keyCode <= VK_Z) {
return String.valueOf((char)keyCode);
} switch(keyCode) {
case VK_ENTER: return Toolkit.getProperty("AWT.enter", "Enter");
case VK_BACK_SPACE: return Toolkit.getProperty("AWT.backSpace", "Backspace");
case VK_TAB: return Toolkit.getProperty("AWT.tab", "Tab");
============================================================================= if (keyCode >= VK_0 && keyCode <= VK_9 ||
keyCode >= VK_A && keyCode <= VK_Z) {
return String.valueOf((char)keyCode);
} 0-9和A-Z都将 keyCode 直接返回
而 VK_ENTER 的值是 10
所以 e.getKeyText(10); 返回的当然是 "Enter"