Java - 有可能随时检测Mouse Button Four或KeyPress的时间吗?

时间:2014-02-23 22:19:52

标签: java swing

所以我一直试图用Java弄清楚一些事情。当弹出JFrame窗口时,我有点击事件触发器并在程序中打印“SUPSUP”。但我想知道有没有办法设置应用程序,如果我按下JFrame窗口外的按钮4仍然会打印“SUPSUP”?我的意思是我希望在java中有一个监听器,一般不与JFrame组件绑定,我不介意我是否需要使用密钥监听器。我正在尝试构建一个程序,每次点击按钮4时都会在屏幕上做某些事情,但是我无法点击蓝色的JFrame谢谢。

到目前为止,我有这段代码。

public class CriticalMassWizard implements MouseListener
{
private static CriticalMassWizard instance = null;
private static Robot robot;
private static boolean triggerSpam;
private static JFrame frame = new JFrame("Tester");

// Singleton
public static CriticalMassWizard getInstance() 
{
   if(instance == null) {

      instance = new CriticalMassWizard();
      instance.setUpFrame();

      try {
        robot = new Robot();
      } catch (AWTException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
   }

   return instance;
}

private void setUpFrame()
{
    frame.setResizable(true);
    frame.setSize(300, 300);
    frame.getContentPane().setBackground(Color.BLUE);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.addMouseListener(this);
}


@Override
public void mouseClicked(MouseEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub
    if(e.getButton() == 4)
    {
        System.out.println("SUPSUP");
    }
}

@Override
public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

}

1 个答案:

答案 0 :(得分:0)

现在这与FocusListeners以及您所在的JFrame处的某个时间点设置的焦点有关。如果您有多个JFrame并且单击其中一个以在另一个上输出内容,则可能是可能的,但是如果您单击桌面,例如,则无法通过本机Java库完成此操作。