除了使用Scanner类之外的输入方法?

时间:2014-07-24 17:27:12

标签: java

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

  • 读取一个字节 - nextByte()
  • 阅读简短文字 - nextShort()
  • 阅读int - nextInt()
  • 阅读一篇文章 - nextLong()
  • 阅读花车 - nextFloat()
  • 阅读双| nextDouble()
  • 阅读布尔值 - nextBoolean()
  • 阅读完整的一行 - nextLine()
  • 读一个字 - next()

如果我想要一个不需要键盘的输入,只有当用户点击屏幕时(例如),该怎么办?我该怎么办呢?

3 个答案:

答案 0 :(得分:2)

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
});

我强烈建议你调查听众:Introduction to Event Listeners

如果您不使用GUI,请查看JNativeHook,其中包含NativeKeyListener和NativeMouseListener。他们随时都会收听输入,因为它们会被添加到您的屏幕而不是组件中。

GlobalScreen.getInstance().addKeyListener(new NativeKeyListener() {
    public void keyPressed(NativeKeyEvent e) {

    }

    //implement other methods
});

答案 1 :(得分:1)

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

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

  • keyPressed(KeyEvent e),在按下按键时执行特定操作。

  • keyReleased(KeyEvent e),在发布密钥时执行特定操作。

希望这会有所帮助。

答案 2 :(得分:0)

您可以通过使用lambda表达式在Java 8中实现此目的。

代码:

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/