【问题标题】:KeyEvents new KeyEvent variable?KeyEvents 新的 KeyEvent 变量?
【发布时间】:2013-06-10 09:38:13
【问题描述】:

对于我的一生,我在互联网上找不到任何帮助。我的目标是编写一个在按住 shift 并在应用程序上单击鼠标时发生的函数。现在我只专注于转变。

我有这门课:

public void keyPressed(KeyEvent e)
{

    if (e.isShiftDown())
    {
        //Do Something
    }

}

然后在我的主要课程中,我猜测了我认为可能可行的方法,但失败了。

KeyEvent e = new KeyEvent;
keyPressed(e);

出现此错误:

KeyEvent cannot be resolved to a variable

我见过有这行代码的例子。所以我被困住了。我对 Java 的了解太有限,我没有任何想法。

感谢任何帮助。

【问题讨论】:

    标签: java awt keylistener modifier-key


    【解决方案1】:

    您可能只想关注点击,因为这是定义事件。 Shift 是修饰键。当你有你的 MouseEvent 我时,做me.isShiftDown()

    http://docs.oracle.com/javase/6/docs/api/java/awt/event/InputEvent.html

    所以我想那会是这样的

    public void mousePressed(MouseEvent me) {
      if (me.isShiftDown()) {
        // Do the function
      }
    }
    

    假设您有一些随机对象,例如一个按钮,可以注册点击:

    JButton button = new JButton("I'm a button!");
    button.addMouseListener(new MouseListener() {
      public void mousePressed(MouseEvent me) {
        if (me.isShiftDown()) {
          // Do the function
        }
      }
    });
    

    现在,每当单击按钮时,您的程序都会自动检查是否按下了 shift 键,如果是,则执行您的函数。

    【讨论】:

    • 好的,很酷。但是在 main 中,我该如何调用该函数?或者更具体地说,如何定义“MouseEvent”类型?
    • @KyleWright 当您尝试编写事件时,您正在尝试以编程方式创建单击或按键等。想要捕获(在您的情况下)单击更为常见。我将根据您想要后一种行为的假设更新我的答案。
    • 确定!祝你的计划好运
    • @KyleWright:我忘了说:当你创建 MouseListener 时,你必须包含处理所有鼠标事件类型的代码:mousePressed、mouseReleased 等(代码不必做任何事情,它必须存在)。如果您不这样做,Java 将会出现问题。话虽如此,请考虑使用 MouseAdapter。它会让你只创建你真正想要的处理程序。我不知道如何临时使用它们,否则我会将它们包含在上面。
    • @RussellUhl,使用 MouseAdapter 与使用 MouseListener 相同,只是您只需要实现要覆盖的方法。适配器为所有方法提供空实现。
    猜你喜欢
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2022-08-16
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多