菜鸟提问,请指教! public void KeyPressed(KeyEvent e)兄台,你尴尬了,把KeyPressed写成keyPressed就行了……如果JDK1.5以上,建议方法上加一个@Override的注记,写了以后如果不是重写的话,通不过编译的,可以把逻辑问题转到编译阶段发现。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 爆汗但是我更正后,发现,class keyenter extends KeyAdapter{ public void keyPressed(KeyEvent e){ if(e.getKeyChar()=='H') txf.setText("H"); System.out.println(e.getKeyChar()); }其中仍然不能设置txf中的内容,但是命令行输出e.getKeyChar()倒是有的。 刚刚变更内容为class keyenter extends KeyAdapter{ public void keyPressed(KeyEvent e){ if(e.getKeyCode()=='H') txf.setText("H"); System.out.println(e.getKeyChar()); }就可以。我看到提示里写的getKeyCode这个方法是int型啊难道是等号右端‘H’字符做了转换?为什么getKeyChar不成功呢? 还有,一个问题,就是当我按下H键后,txf内容被置为H后为什么在后面还会带有一个h,输出在txf的内容是:Hh 首先提醒楼主的是不应该用if(e.getKeyCode()=='H')来判断是否按下'H',而应该用if(e.getKeyCode()==KeyEvent.VK_H)来判断。另外,出现Hh是因为你在按下'H'键以后,触发了keyPressed事件,此时将文本框设为'H',然后再响应你键盘的按键,在文本框中输入了'h',因为你没有阻止这个事件的发生,如果要阻止的话,比较简单的方法是写一个类继承PlainDocument,重写里面的insertString方法,然后调用文本框的setDocument方法设置进去。 class HDocument extends PlainDocument { class HDocument extends PlainDocument { public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { if (!str.equalsIgnoreCase("H")) { super.insertString(offs, str, a); } } }}然后调用文本框的setDocument方法设置进去就行了,不过这个写得比较简略。 呃,手一抖,多整了一个class,汗,楼主见谅…… 手一抖能拌出一个class来,楼上才是真正的高手 java的对象的引用是指java对象在堆中的内存地址么? jsf jstl foreach循环调用get方法的问题 java的方向选择 打JAR包后找不到第三方包,附上MAINEFEST.MF文件设置 数据库输出问题 那位好心人帮帮忙啊,菜鸟问题在线等待! 请帮忙看看这蓝牙应用程序 高分求动态曲线的applet代码 问一个,有没有JAVA写的病毒?? 各位帮忙看一小段代码 一道关于hashCode()的面试题,填空下。 JAVA delphi socket 通信
但是我更正后,发现,class keyenter extends KeyAdapter{
public void keyPressed(KeyEvent e){
if(e.getKeyChar()=='H')
txf.setText("H");
System.out.println(e.getKeyChar());
}其中仍然不能设置txf中的内容,但是命令行输出e.getKeyChar()倒是有的。
public void keyPressed(KeyEvent e){
if(e.getKeyCode()=='H')
txf.setText("H");
System.out.println(e.getKeyChar());
}就可以。我看到提示里写的getKeyCode这个方法是int型啊难道是等号右端‘H’字符做了转换?
为什么getKeyChar不成功呢?
class HDocument extends PlainDocument {
class HDocument extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
if (!str.equalsIgnoreCase("H")) {
super.insertString(offs, str, a);
}
}
}
}
然后调用文本框的setDocument方法设置进去就行了,不过这个写得比较简略。