簡體   English   中英

除了使用Scanner類之外的輸入方法?

[英]Input methods other than using Scanner class?

我知道獲取用戶輸入的唯一方法是在我的代碼中使用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和NativeMouseListener。 他們隨時都會收聽輸入,因為它們會被添加到您的屏幕而不是組件中。

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

    }

    //implement other methods
});

使用鍵盤輸入的方法之一是實現KeyListener ,它提供以下方法:

  • keyTyped(KeyEvent e) ,在鍵入鍵時執行特定操作。

  • keyPressed(KeyEvent e) ,在按下鍵時執行特定操作。

  • keyReleased(KeyEvent e) ,在釋放密鑰時執行特定操作。

希望這有幫助。

您可以使用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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM