import java.awt.*;
import java.awt.event.*;class app13_7 extends Frame implements KeyListener
{
static TextField tf=new TextField(20);
static TextArea ta=new TextArea(6,20);
public static void main(String args[])
{
app13_7 frm = new app13_7();
frm.setLayout(null);
frm.setTitle("按键事件");
frm.setBounds(100,100,240,150);
tf.setBounds(20,30,200,20);
ta.setBounds(20,55,200,80);
ta.setEnabled(false);
frm.add(tf);
frm.add(ta);
tf.addKeyListener(frm);
frm.setVisible(true);
}
public void keyPressed(KeyEvent e) //这是接口方法吧?
{
if(e.isActionKey()) ta.append("您按的是Action键!\n"); //append与setText我想没有区别吧??
else ta.setText("keyPressed事件v tg ,您按了"+e.getKeyChar()+"键\n");
}
public void keyRelease(KeyEvent e)
{
ta.append("您现在放开了按键\n");
}
public void keyTyped(KeyEvent e)
{
String input = tf.getText()+e.getKeyChar();
if(e.getKeyChar()=='\n') ta.setText(input);
}
}
import java.awt.event.*;class app13_7 extends Frame implements KeyListener
{
static TextField tf=new TextField(20);
static TextArea ta=new TextArea(6,20);
public static void main(String args[])
{
app13_7 frm = new app13_7();
frm.setLayout(null);
frm.setTitle("按键事件");
frm.setBounds(100,100,240,150);
tf.setBounds(20,30,200,20);
ta.setBounds(20,55,200,80);
ta.setEnabled(false);
frm.add(tf);
frm.add(ta);
tf.addKeyListener(frm);
frm.setVisible(true);
}
public void keyPressed(KeyEvent e) //这是接口方法吧?
{
if(e.isActionKey()) ta.append("您按的是Action键!\n"); //append与setText我想没有区别吧??
else ta.setText("keyPressed事件v tg ,您按了"+e.getKeyChar()+"键\n");
}
public void keyRelease(KeyEvent e)
{
ta.append("您现在放开了按键\n");
}
public void keyTyped(KeyEvent e)
{
String input = tf.getText()+e.getKeyChar();
if(e.getKeyChar()=='\n') ta.setText(input);
}
}
楼主【sure2003】截止到2008-07-17 08:17:25的历史汇总数据(不包括此帖):
发帖的总数量:245 发帖的总分数:10383 每贴平均分数:42
回帖的总数量:210 得分贴总数量:6 回帖的得分率:2%
结贴的总数量:244 结贴的总分数:10333
无满意结贴数:2 无满意结贴分:50
未结的帖子数:1 未结的总分数:50
结贴的百分比:99.59 % 结分的百分比:99.52 %
无满意结贴率:0.82 % 无满意结分率:0.48 %
值得尊敬
public void keyReleased(KeyEvent e);
public void keyReleased (KeyEvent e){}
也可能是你上述的方法,因为粗心而写错了.
KEY_TYPED(只在可生成有效 Unicode 字符时产生。)
KEY_RELEASED
但在某些情况下(例如,在激活自动重复或输入方法时),该顺序可能会有所不同(并且与平台有关)。
import java.awt.event.*;class app13_7 extends Frame implements KeyListener
{
static TextField tf=new TextField(20);
static TextArea ta=new TextArea(6,20);
public static void main(String args[])
{
app13_7 frm = new app13_7();
frm.setLayout(null);
frm.setTitle("按键事件");
frm.setBounds(100,100,240,150);
tf.setBounds(20,30,200,20);
ta.setBounds(20,55,200,80);
ta.setEnabled(false);
frm.add(tf);
frm.add(ta);
tf.addKeyListener(frm);
frm.setVisible(true);
}
public void keyPressed(KeyEvent e) //这是接口方法吧?
{
if(e.isActionKey()) ta.append("您按的是Action键!\n"); //append与setText我想没有区别吧??
else ta.setText("keyPressed事件v tg ,您按了"+e.getKeyChar()+"键\n");
}
public void keyRelease(KeyEvent e)
{
ta.append("您现在放开了按键\n");
}
public void keyTyped(KeyEvent e)
{
String input = tf.getText()+e.getKeyChar();
if(e.getKeyChar()=='\n') ta.setText(input);
}
public void keyReleased(KeyEvent key) {
}
}运行下是不是对了
Typed 键入字符 Pressed 按下键盘上的按键,当按下 Shift 键时并不会键入字符,此时只会引发 Pressed 事件而不会引发 Typed 事件。
KEY_TYPED(只在可生成有效 Unicode 字符时产生。)
KEY_RELEASED
但在某些情况下(例如,在激活自动重复或输入方法时),该顺序可能会有所不同(并且与平台有关)。
注: 不产生 Unicode 字符的键组合(如 F1 和 HELP 键等动作键)不会生成 KEY_TYPED 事件。
并非所有键盘和系统都能够生成所有的虚拟键码。在 Java 中不会尝试人为地生成这些键。
虚拟键码不标识物理键:它们取决于平台和键盘布局。例如,使用美国键盘布局时生成 VK_Q 的键在使用法国键盘布局时将生成 VK_A。
并非所有的字符都有与之关联的 keycode。例如,没有用于问号的 keycode,因为没有在主层上显示问号的键盘。
为了支持平台无关的动作键处理,Java 平台为某些功能使用少量附加虚拟键常量,否则必须通过解释虚拟键码和修饰符来识别这些功能。例如,对于日文 Windows 键盘,返回 VK_ALL_CANDIDATES 而不是 VK_CONVERT 加 ALT 修饰符。
正如 Focus Specification 中指定的那样,默认情况下键事件被指派给焦点拥有者。
警告:除了 Java 语言定义的这些键之外(VK_ENTER、VK_BACK_SPACE 和 VK_TAB),不要依赖 VK_ 常量值。Sun 保留将来根据需要更改这些值的权利,以适应更大范围的键盘。