求各位java大神 三个按钮小鼠标点击它,可以用键盘上的上下左右移动 ,我打了代码,怎么动不了?
mportjava.awt.*;importjava.awt.event.*;publicclassKeyMove{publicstaticvoidmain(String...
mport java.awt.*;
import java.awt.event.*;
public class KeyMove{
public static void main(String args[]){
new KeyFrameMove().lunchFrame();
}
}
class KeyFrameMove extends Frame{
public void lunchFrame(){
Button button1 = new Button("hellow");
Button button2 = new Button("hellow");
Button button3 = new Button("hellow");
setLayout(new FlowLayout(FlowLayout.CENTER));
addKeyListener(new FrameMove());
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)//窗口正处在关闭过程中时调用
{
System.exit(0);
}
}
);
add(button1);
add(button2);
add(button3);
setSize(100,100);
setBounds(100,100,500,500);
setVisible(true);
}
}
class FrameMove extends KeyAdapter{
int xl=80,yl=80;
public void keyPressed(KeyEvent e){
if(e.getKeyCode()== KeyEvent.VK_UP){
System.out.println("\n Go Up");
yl-=10;
}
else if(e.getKeyCode()== KeyEvent.VK_DOWN){
System.out.println("\n Go Down");
yl+=10;
}
else if(e.getKeyCode()== KeyEvent.VK_LEFT){
System.out.println("\n Go Left");
xl-=10;
}
else if(e.getKeyCode()== KeyEvent.VK_RIGHT){
System.out.println("\n Go Right");
xl+=10;
}
else
System.out.println(e.getKeyChar());
}
} 展开
import java.awt.event.*;
public class KeyMove{
public static void main(String args[]){
new KeyFrameMove().lunchFrame();
}
}
class KeyFrameMove extends Frame{
public void lunchFrame(){
Button button1 = new Button("hellow");
Button button2 = new Button("hellow");
Button button3 = new Button("hellow");
setLayout(new FlowLayout(FlowLayout.CENTER));
addKeyListener(new FrameMove());
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)//窗口正处在关闭过程中时调用
{
System.exit(0);
}
}
);
add(button1);
add(button2);
add(button3);
setSize(100,100);
setBounds(100,100,500,500);
setVisible(true);
}
}
class FrameMove extends KeyAdapter{
int xl=80,yl=80;
public void keyPressed(KeyEvent e){
if(e.getKeyCode()== KeyEvent.VK_UP){
System.out.println("\n Go Up");
yl-=10;
}
else if(e.getKeyCode()== KeyEvent.VK_DOWN){
System.out.println("\n Go Down");
yl+=10;
}
else if(e.getKeyCode()== KeyEvent.VK_LEFT){
System.out.println("\n Go Left");
xl-=10;
}
else if(e.getKeyCode()== KeyEvent.VK_RIGHT){
System.out.println("\n Go Right");
xl+=10;
}
else
System.out.println(e.getKeyChar());
}
} 展开
1个回答
展开全部
你的这点出现问题了 addKeyListener(new FrameMove()); 这样直接写的话 是对Fream窗口添加一个键盘事件 往往是没有办法直接用键盘对它进行操作的 改成
button1.addKeyListener(new FrameMove()); 之后 先点下第一个按钮 然后就可以有反应了
如果想让它动 还需要在keyPressed这个方法里面 设置下
Button button = (Button)e.getSource();
这个button的
button.setBounds(x, y, width, height)
这样的话 要求你的布局应该为 null 布局 而不能是流式布局
如果还不行 接着问
button1.addKeyListener(new FrameMove()); 之后 先点下第一个按钮 然后就可以有反应了
如果想让它动 还需要在keyPressed这个方法里面 设置下
Button button = (Button)e.getSource();
这个button的
button.setBounds(x, y, width, height)
这样的话 要求你的布局应该为 null 布局 而不能是流式布局
如果还不行 接着问
追问
Button button = (Button)e.getSource();
这个意思不太懂,具体放在哪? (Button)e.getSource();什么意思,麻烦啦
追答
Button button = (Button)e.getSource();
放到你的事件里面
Button button = (Button)e.getSource(); 这个就是说
你在哪个按钮产生事件了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询