今天在写游戏,即使按下按钮听,也很难施加苦衷。
实现了接口,但是不能监听
后来我发现我只是实现了封口,没有调用它。 仔细想想,在控件面板上添加了addkey监听器(this )。
要写拦截,你需要记住让控件触发。 总之基础不牢固。 gjdwd
其次,用其他程序写测试发现方法也不行。 后来,比较起来少了一个
this.setfocusable(true;
在网上调查之后才知道有必要成为焦点。 伙伴们知道吗?
将控件设置为可获得焦点的状态。 默认情况下无法获得焦点。 如果不设置为true,则无法获取控件的单击事件
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import Java.awt.event.key adapter;
import java.awt.event.KeyEvent;
import Java.awt.event.key listener;
import javax.swing.JFrame;
import javax.swing.JPanel;
publicclassmainframeextendsjframe {
privatekeyboardpanelkeyboardpanel=newkeyboardpanel (;
公共邮件(
添加(keyboard panel );
kyboardPanel.setfocusable(true );
}
publicstaticvoidmain (字符串[ ] args ) {
mainFrame frame=new mainFrame (;
frame.settitle(mainframe );
frame.setsize (300,300 );
frame.setlocationrelativeto () null;
frame.setdefaultcloseoperation (jframe.exit _ on _ close );
frame.setvisible(true;
}
staticclasskeyboardpanelextendsjpanelimplementskeylistener {
私有输入x=100;
私有输入y=100;
private char keyChar='A ';
公共密钥面板
setbackground(color.cyan;
addkey监听器(this;
/* addkey监听器(new key adapter () ) ) ) )。
公共语音密钥预定义(keyevent e ) {
sitch(e.getkeycode ) ) ) )。
case KeyEvent.VK_DOWN:
y=10;
黑;
case KeyEvent.VK_UP:
y-=10;
黑;
case KeyEvent.VK_LEFT:
x-=10;
黑;
case KeyEvent.VK_RIGHT:
x=10;
黑;
默认:
keyChar=e.getKeyChar (;
}
//repaint (;
}
); */
}
保护性组件(graphicsg ) {
super.paintcomponent(g );
g.setfont(newfont('timesRoman ',Font.PLAIN,40 ) );
g.drawstring(string.valueof ) keychar ),x,y );
}
@Override
公共语音密钥预定义(keyevent e ) {
//todo自动生成方法stub
sitch(e.getkeycode ) ) ) )。
case KeyEvent.VK_DOWN:
y=10;
黑;
case KeyEvent.VK_UP:
y-=10;
黑;
case KeyEvent.VK_LEFT:
x-=10;
黑;
case KeyEvent.VK_RIGHT:
x=10;
黑;
默认:
keyChar=e.getKeyChar (;
}
repaint (;
}
@Override
publicvoidkeyreleased (keyevent e ) {
//todo自动生成方法stub
}
@Override
Publicvoidkeytyped(keyevente ) {
//todo自动生成方法stub
}
}
}