【问题标题】:Trying to move a rectangle with the help of arrow keys in Core Java using JFrames尝试使用 JFrames 在 Core Java 中借助箭头键移动矩形
【发布时间】:2016-04-16 17:11:48
【问题描述】:

我编写了一个程序,我试图在箭头键的帮助下向下移动一个矩形。但它不动。这是我的代码。谁能帮我看看它为什么不动?我还在按键按下事件中添加了一个 System.out.print(),但它没有在控制台上显示任何输出。看来 keyevent 部分不起作用。

  `import java.awt.event.KeyAdapter;
   import java.awt.event.KeyEvent;
   import java.awt.event.KeyListener;

   import javax.swing.ImageIcon;
   import javax.swing.JFrame;
   import javax.swing.JLabel;

public class MovingBoxWithArrowKeys extends JFrame
{
    JLabel l ;

public MovingBoxWithArrowKeys(String title)
{
    super(title);


    l = new JLabel(new ImageIcon("download-box-icon.png"));
    //l.setLocation(10 , 10 );
    l.setBounds(10 , 10 , 400 , 400 );
    l.setVisible(true);
    l.isOptimizedDrawingEnabled();
    l.requestFocusInWindow();
    //l.requestFocus();
    l.addKeyListener(new KeyAdapter() 
    {
        public void keyPressed(KeyEvent k)
        {
            if(k.getKeyCode() == KeyEvent.VK_DOWN)
            {
                l.setLocation(l.getX(), l.getY()+1);
                repaint();
                System.out.print("Down Pressed");
            }
        }
    });



    setLayout(null);
    setSize(this.getMaximumSize());
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setResizable(false);
    setVisible(true);
    //requestFocus();

    getContentPane().add(l);
    //add(l);
}
public static void main(String args[])
{
    MovingBoxWithArrowKeys m = new MovingBoxWithArrowKeys("Moving Box With Keys");

}
}`

【问题讨论】:

    标签: java animation keylistener


    【解决方案1】:

    您的KeyListener 需要添加到JFrame,因为它仅适用于具有实际焦点的组件。那不是你的JLabel 它是你的JFrame
    即使您在初始化代码中使用l.requestFocusInWindow(); 请求焦点,您也会将其丢失给JFrame,因为它是无法保持焦点的组件之一

    所以简单地改变这个:

    l.addKeyListener(new KeyAdapter() {...}
    

    到这里

    addKeyListener(new KeyAdapter() {...}
    

    【讨论】:

    • 太棒了。太感谢了。矩形现在正在完美移动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 2018-10-11
    相关资源
    最近更新 更多