我知道获取用户输入的唯一方法是在我的代码中使用Scanner类,(我相信)它只包含这些方法:
- 读取一个字节-
nextByte()
- 读取短-
nextShort()
- 读取int -
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和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/