【问题标题】:How to set up mouse and keyboard input如何设置鼠标和键盘输入
【发布时间】:2014-02-22 22:54:40
【问题描述】:

您好,我正在尝试使用 java 编写游戏。这是我第一次使用java,我习惯了C#。在 C# 中,我会调用 Mouse.getLocation() 并使用鼠标位置创建一个矩形。然后通过使用 if(Mouse.Left().toString() == "Pressed") 我将检查鼠标矩形是否与任何其他对象相交并采取相应措施。

我注意到在 java 中没有为您提供这些方法。所以我想知道,处理鼠标输入的最佳方法是在我所有的可点击对象上添加侦听器吗?我了解听众,并且知道如何使用它们,但我只是想检查是否有更有效的方法来处理输入或更适合我最符合的方式。

【问题讨论】:

  • 当您最终编写一些代码时,请记住将字符串与 equals() 方法进行比较,而 not== 进行比较。

标签: java input mouse


【解决方案1】:
  • 让您的框架实现 MouseListener 接口
  • 实现所有抽象方法,但在您的情况下可能是 mouseClicked 事件
  • 使用 SwingUtilities 类确定单击的按钮是否为左键单击
  • 如果是左键单击,则设置 x 和 y,即单击相对于框架而非屏幕的位置。

    公共类 MouseListeningObject 扩展 JFrame 实现 MouseListener {

    int x, y;

    公共 MouseListeningObject () { addMouseListener(this); }

    @覆盖 公共无效鼠标点击(鼠标事件e){ if(SwingUtilities.isLeftMouseButton(e)){ x = e.getX(); y = e.getY(); } }

    @覆盖 公共无效鼠标按下(鼠标事件e){ // 这里有一些代码 }

    @覆盖 公共无效鼠标释放(鼠标事件e){ // 这里有一些代码 }

    @覆盖 公共无效鼠标输入(鼠标事件e){ // 这里有一些代码 }

    @覆盖 公共无效鼠标退出(鼠标事件e){ // 这里有一些代码 } }

【讨论】:

    【解决方案2】:

    您希望框架实现 MouseListener,然后将其添加到构造函数中。

    class MyFrame extends JFrame implements MouseListener {
        MyFrame() {
            addMouseListener(this);
        } 
        @Override
        public void mousePressed(MouseEvent e) {}
        @Override
        public void mouseEntered(MouseEvent e) {}
        @Override
        public void mouseExited(MouseEvent e) {}
        @Override
        public void mouseReleased(MouseEvent e) {}
    } 
    

    【讨论】:

      猜你喜欢
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 2022-08-07
      • 2011-12-09
      相关资源
      最近更新 更多