我是否可以拥有一个没有组件的情况下监听键盘的Java程序?
我可以在没有可视组件的情况下使用Interface KeyListener吗?
我不需要java.awt中的任何功能。我不需要任何窗户/组件等。我只是希望程序对某些输入做出反应。
答案 0 :(得分:1)
我是否可以拥有一个没有组件的情况下监听键盘的Java程序?
没有
我可以在没有可视组件的情况下使用Interface KeyListener吗?
没有。
答案 1 :(得分:1)
必须接受输入以便调用KeyListener。您使用组件注册KeyListener。需要某种输入组件,因此您可以注册KeyListener。
请记住,您的代码位于JVM内部。 JVM是从底层操作系统获取直接信号的人 - 而不是您的代码。
您可以尝试在某些本机代码中创建JNI挂钩。
答案 2 :(得分:0)
关于„ 我可以在没有可视组件的情况下使用Interface KeyListener吗?”
是的,您可以(如果问题本身):
image: node:12.18.3 # change to match your project's node version
cache:
paths:
- node_modules/
before_script:
- rm -rf build
- CI=false npm install
pages:
stage: deploy
script:
- CI=false npm run build
- rm -rf public
- cp build/index.html build/404.html
- mv build public
artifacts:
paths:
- public
only:
- master
package igb.so.SO19706590;
import static java.lang.System.out;
import java.awt.TextField;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
class KeyEventProducerConsumerSample {
public static void main( final String[] args ) {
final KeyEventProducerConsumerSample kes = new KeyEventProducerConsumerSample();
final KeyEventProducer kep = kes.new KeyEventProducer();
final KeyEventConsumer kec = kes.new KeyEventConsumer();
kep.addKeyListener( kec ).raise();
} // main()
class KeyEventProducer {
KeyListener kl;
KeyEventProducer addKeyListener( final KeyListener kl ) {
this.kl = kl;
return this;
} // addKeyListener()
/** Creating KeyEvents programmatically, with no keyboard involved
* and informing the KeyEventConsumer (KeyListener) about them.
*/
void raise() {
kl.keyTyped( new KeyEvent( new TextField(), 1, 1, 1, 1, '1' ) );
kl.keyPressed( new KeyEvent( new TextField(), 2, 2, 2, 2, '2' ) );
kl.keyReleased( new KeyEvent( new TextField(), 3, 3, 3, 3, '3' ) );
} // raise()
} // KeyEventProducer
/** Using KeyListener interface without any visual component.
*/
class KeyEventConsumer implements KeyListener {
@Override
public void keyTyped( final KeyEvent ke ) {
out.println( ke );
}
@Override
public void keyPressed( final KeyEvent ke ) {
out.println( ke );
}
@Override
public void keyReleased( final KeyEvent ke ) {
out.println( ke );
}
} // KeyEventConsumer
} // KeyEventProducerConsumerSample