所以我一直在尝试做一些简单的编码:用WASD键移动一个蓝色方块,
public static void main (String args[])
{
new MoveWASD();
}
public MoveWASD()
{
super("Use-WASD-to-Move");
setSize(800, 450);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void paint(Graphics g)
{
g.setColor(Color.WHITE);
g.fillRect(0, 0, 800, 450);
g.setColor(Color.BLUE);
g.fillRect(Location[0], Location[1], 20, 20);
System.out.println("PRINTEDs");
}
public class MoveDetection extends Thread implements KeyListener
{
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
public void keyPressed(KeyEvent arg0)
{
public void run()
{
while(true)
{
try
{
if(event.getKeyChar() == 'w')
{
Location[1] = Location[1] - 20;
Repeat = true;
}
else if(event.getKeyChar() == 'd')
{
Location[0] = Location[0] + 20;
}
else if(event.getKeyChar() == 's')
{
Location[1] = Location[1] + 20;
}
else if (event.getKeyChar() == 'a')
{
Location[0] = Location[0] - 20;
}
else
{
Location[0] = Location[0];
}
Thread.sleep(75);
}
catch(Exception e)
{
break;
}
}
}
}
}
但是,在将一个静态空洞放入另一个空洞时出现错误,箭头(上方)指向我的两个错误:一个正在运行,该错误表示:令牌“ void”的语法错误,@预期,而在结束括号下的另一个在说语法错误的run()中,插入“ EnumBody”以完成BlockStatements另外,当我在movedetection类下的任何“ void”下放置“ System.out.write()”时,它不会显示,这可能意味着它不是没关系...当我刚刚开始编码时,我不知道这意味着什么,有什么帮助吗?
在Java中,您不能将方法嵌套在其他方法中,也许可以阅读this。
您需要从其他方法调用该方法
public void run(KeyEvent event) {
//do stuff
}
public void keyPressed(KeyEvent event) {
run(event);
}
也许更重要的是,您有一个while(true)
事件处理程序。这将导致EDT被阻止,从而导致GUI冻结。
我看不到while
循环的任何原因。每次按键都会触发按键事件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句