使用扫描器类以外的输入方法

  • 本文关键字:方法 扫描器 java
  • 更新时间 :
  • 英文 :


我知道获取用户输入的唯一方法是在我的代码中使用Scanner类,(我相信)它只包含这些方法:

  • 读取一个字节- nextByte()
  • 读取短- nextShort()
  • 读取int - nextInt()
  • 读取长- nextLong()
  • 读取浮点数- nextFloat()
  • 读取双- nextDouble()
  • 读取布尔值- nextBoolean()
  • 读取完整行- nextLine()
  • 读字- next()

如果我想要一个不需要键盘的输入,并且只在用户点击屏幕(例如)时才进行,我应该怎么做呢?

Scanner通常用于轻松地从控制台获取用户输入。这不是用于鼠标/键输入。

如果使用Swing,您可以在面板中添加KeyListenerMouseListener,这将触发包含您编写的代码的事件方法。

JPanel panel = new JPanel();
panel.addKeyListener(new KeyListener() {
    public void keyPressed(KeyEvent e) {
         int keyCode = e.getKeyCode();
         switch(keyCode) {
             case KeyEvent.VK_UP:
                 // the up arrow key was pressed
                 break;
         }
    }
    //implement other methods
});

我强烈建议你看看监听器:事件监听器简介

如果你不使用GUI,查看JNativeHook,它带有NativeKeyListener和nativeemouselistener。它们随时监听输入,因为它们被添加到屏幕上,而不是一个组件。

GlobalScreen.getInstance().addKeyListener(new NativeKeyListener() {
    public void keyPressed(NativeKeyEvent e) {
    }
    //implement other methods
});

使用键盘输入的方法之一是实现KeyListener,它提供了以下方法:

  • keyTyped(KeyEvent e),它在键入键时执行特定的操作。

  • keyPressed(KeyEvent e),当键被按下时它会做一个特定的动作。

  • keyReleased(KeyEvent e),当键被释放时执行特定的动作。

希望有帮助。

您可以在Java 8中通过使用lambda表达式 来实现这一点。

代码:

public class ListenerTest {
   public static void main(String[] args) {
  JButton testButton = new JButton("Test Button");
 testButton.addActionListener(e -> { 
   System.out.println("Click Detected by Lambda Listner");
 });
 // Swing stuff
 JFrame frame = new JFrame("Listener Test");
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 frame.add(testButton, BorderLayout.CENTER);
 frame.pack();
 frame.setVisible(true);
}
  }
源:

http://blueskyworkshop.com/topics/Java-Pages/lambda-expression-basics/

教程

http://docs.oracle.com/javase/tutorial/uiswing/events/

最新更新