我知道获取用户输入的唯一方法是在我的代码中使用扫描程序类,我相信它只包含这些方法:
nextByte()
nextShort()
nextInt()
nextLong()
nextFloat()
nextDouble()
nextBoolean()
nextLine()
next()
如果我想要一个不需要键盘的输入,只有当用户点击屏幕时(例如),该怎么办?我该怎么办呢?
答案 0 :(得分:2)
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
});
我强烈建议你调查听众: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/
教程