[英]Input methods other than using Scanner class?
我知道獲取用戶輸入的唯一方法是在我的代碼中使用Scanner類,我相信它只包含以下方法:
nextByte()
nextShort()
nextInt()
nextLong()
nextFloat()
nextDouble()
nextBoolean()
nextLine()
next()
如果我想要一個不需要鍵盤的輸入並且僅在用戶點擊屏幕時(例如)繼續,我該怎么做呢?
Scanner
通常用於從控制台輕松獲取用戶輸入。 這不用於鼠標/鍵輸入。
如果使用Swing,您可以將KeyListener
和MouseListener
添加到面板,這將觸發包含您編寫的代碼的事件方法。
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/
教程
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.