【问题标题】:How do I use a method with the arguments of "KeyEvent e"?如何使用带有“KeyEvent e”参数的方法?
【发布时间】:2017-04-06 04:55:27
【问题描述】:

我已经查看了我之前的一个问题的一堆答案(它已被回答),但我一直看到的一些方法是:

public void keyPressed(KeyEvent e)

但从来没有人展示过这些方法在哪里使用,所以我从来不知道如何处理这个参数。

例子:

public void keyPressed(KeyEvent e, Robot r) {
    int key = e.getKeyCode();
    if (key == KeyEvent.VK_W) {
        r.keyPress(KeyEvent.VK_R);
        r.mousePress(InputEvent.BUTTON1_MASK);
        try { Thread.sleep(100); } catch (Exception s) {}
        r.mouseRelease(InputEvent.BUTTON1_MASK);
    }
}

public static void autoCliker() throws AWTException, InterruptedException
{
    Robot r = new Robot();
    while(KeyPressed(not sure what to do here, r)//this is what my question is about
{
        Thread.sleep(10);
        r.keyPress(KeyEvent.VK_R);
        r.mousePress(InputEvent.BUTTON1_MASK);
        try { Thread.sleep(100); } catch (Exception e) {}
        r.mouseRelease(InputEvent.BUTTON1_MASK);

    }
}

更多的是关于如何在方法中的参数中使用事件,而不是关于 KeyEvent,我只是以我的一个程序为例。

【问题讨论】:

  • 您快速删除了您的其他问题。欢迎新手在这里提问;但是正如 EJP 试图向您解释的另一个被否决的问题:形式很重要。当您询问编码问题时,请确保其中有一个真实 minimal reproducible example。不要浪费你的时间来表达你是一个没有名声的新手。那没关系。这是一个问答社区——唯一重要的是您输入的质量。而您今天早上删除的问题根本不属于与该社区范围完全匹配的问题类别。如前所述,这个问题可能
  • 有很多不同的原因,其中很多不是编程问题。从这个意义上说:A)您可以在 quora.com 等论坛上提问 - 但不要搞错;你可能不会那么容易地在那里投票,但是当你提出一个“坏”的问题时,你根本不会收到答案。 B)简单地研究其他(更成功的)新手如何写他们的问题。研究help center 告诉你的内容。所有的。反复。而且,是的,我承认:人们有时在这里很挑剔。一个糟糕的新手问题在 10 分钟内被否决并关闭并删除;其他人得到支持和...
  • 持续吸引 c..p 回答数天或数周。是的,“java”标签是人们更挑剔的标签。但是,事情就是这样结束的。如前所述:在写问题时尽量集中注意力。试着想想一个完全陌生的人会对你的意见有何反应......并理解:人们在投反对票时并不认为你是愚蠢的。这不是个人的。这意味着:您应该改进您对我们的意见!
  • @GhostCat 我知道我还有很多东西要学,但是如果我的问题不清楚,那么投票对任何人都没有帮助。我只是不明白为什么没有人直截了当地问我一些我可能不知道的细节。只是问我一些我错过的事情甚至可能会指出我需要的方向,以便我修复我的错误。我现在也知道,最好为固定代码添加一个新块,而不是让人们在 cmets 中搜索答案。 (至少这是我得出的一个结论)
  • 这只是当我变得过于苛刻时对我有用的提示。我所做的只是记住我们曾经都是什么都不知道也不担心什么的孩子,我只是把包括我自己在内的每个人都看作是一个孩子,这让我开阔了眼界,让我冷静地回答而不是太苛刻.这很奇怪,但对我有用。

标签: java events arguments keyevent


【解决方案1】:

当您的类实现 KeyListener 时,会显示此方法以及其他方法。

public class Test implements KeyListener {

此方法检测键盘上的按键。如果要检测某个键,例如 w。这样做:

if(e.getKeyCode.equals(KeyEvent.VK_W);

希望这会有所帮助。

【讨论】:

  • 这确实有帮助,但它仍然不是我想要的。
  • 我会更新问题并举例说明我的意思。
  • 你问的问题,你所需要的只是把参数,不知道那是什么问题。如果您不需要创建自己的 keyPressed 方法(过于复杂),只需实现 KeyListener 并使用默认方法并在该方法中添加您的代码。这样您就不需要调用该方法,因为它是自动调用的。
  • 抱歉这么晚才回复,但我之前的问题有点不清楚。我没有尝试创建新的 KeyPressed 方法。据我了解,我认为您可以在 while 循环中将其用作布尔表达式,以查看是否正在按下某个键。在伪代码中:while(KeyPressed(W key)){do something}
  • 不,但如果可以的话,那会让事情变得更容易,不是吗。
猜你喜欢
  • 2022-01-07
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
  • 1970-01-01
  • 2013-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多