Java 画圆 完成圆的8个方向的移动

这是4个方向的移动,请问怎么把它改成八个方向的移动呢?importjava.awt.*;importjava.awt.event.*;publicclassTestKey... 这是4个方向的移动,请问怎么把它改成八个方向的移动呢?
import java.awt.*;
import java.awt.event.*;
publicclassTestKeyEvent
{
publicstaticvoid main(String[] args)
{
TFrame t = new TFrame("TestKeyEvent");
}
}
classTFrameextends Frame
{
staticintx=50;
staticinty=50;

TFrame(String s)
{
super(s);
setLayout(null);
setBounds(400,500,200,200);
addKeyListener(new KeyAdapter()
{
publicvoid keyPressed(KeyEvent e)
{
int keycode = e.getKeyCode();
if(keycode == KeyEvent.VK_UP)
{
y-=10;
}
elseif(keycode == KeyEvent.VK_DOWN)
{
y+=10;
}
elseif(keycode == KeyEvent.VK_LEFT)
{
x-=10;
}
elseif(keycode == KeyEvent.VK_RIGHT)
{
x+=10;
}
repaint();
}
});
addWindowListener(new WindowAdapter()
{
publicvoid windowClosing(WindowEvent e)
{
System.exit(0);
}
});

setVisible(true);
}

publicvoid paint(Graphics g)
{
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(x,y,30,30);
g.setColor(c);
}
}
展开
 我来答
百度网友143bbe3
2013-01-11 · TA获得超过121个赞
知道答主
回答量:50
采纳率:0%
帮助的人:48万
展开全部
public void keyPressed(KeyEvent e) {
int keycode = e.getKeyCode();
if (keycode == KeyEvent.VK_UP || keycode == KeyEvent.VK_NUMPAD8) {//向上
y -= 10;
} else if (keycode == KeyEvent.VK_DOWN
|| keycode == KeyEvent.VK_NUMPAD2) {//向下
y += 10;
} else if (keycode == KeyEvent.VK_LEFT
|| keycode == KeyEvent.VK_NUMPAD4) {//向左
x -= 10;
} else if (keycode == KeyEvent.VK_RIGHT
|| keycode == KeyEvent.VK_NUMPAD6) {//向右
x += 10;
} else if (keycode == KeyEvent.VK_NUMPAD1) {//左下
x -= 10;
y += 10;
} else if (keycode == KeyEvent.VK_NUMPAD7) {//左上
x -= 10;
y -= 10;
} else if (keycode == KeyEvent.VK_NUMPAD9) {//右上
x += 10;
y -= 10;
} else if (keycode == KeyEvent.VK_NUMPAD3) {//右下
x += 10;
y += 10;
}
repaint();
}
});
改一下这个方法就OK了~~~
追问
我会了
感谢!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式