想编写一个程序。。。。。。求助。。。
我想编一个按键方面的程序。。。比如:我按三下A健,等于我按了Q、W、E各一次。。。
这种要怎么实现。。。
我现在无从下手,告诉我应该用哪些知识也行。。。
--------------------编程问答-------------------- 首先肯定是要对键盘进行监听吧?
下面是一个对键盘进行监听的类、
而你所说的我按三下A健,等于我按了Q、W、E各一次。。
这种规律你可以添加到一个Map中进行记录。
每次按键的时候,先去map中找看是否符合这种规律的数据,如果存在则执行。。
--------------------编程问答-------------------- --------------------编程问答-------------------- 楼上的给出答案了~~~~ --------------------编程问答-------------------- 楼主好好看看吧。。。 --------------------编程问答--------------------
public class D extends JPanel{
private static final long serialVersionUID = 453890560369815259L;
private JFrame frame;
private Container contentPane;
private JButton button;
public D(){
frame=new JFrame();
contentPane=frame.getContentPane();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
init();
}
private void init(){
contentPane.setLayout(null);
button=new JButton("按钮");
button.setBounds(50, 50, 80, 30);
contentPane.add(button);
frame.addKeyListener(new KeyListener(){
@Override
public void keyPressed(KeyEvent e) {
int keyCode=e.getKeyCode();
if(keyCode==KeyEvent.VK_UP){
System.out.println("up");
}else if(keyCode==KeyEvent.VK_DOWN){
System.out.println("down");
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
});
frame.addFocusListener(new FocusListener(){
@Override
public void focusGained(FocusEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void focusLost(FocusEvent arg0) {
// TODO Auto-generated method stub
frame.requestFocus();
}
});
frame.requestFocus();
}
public static void main(String[] args) {
new D();
}
}
问题太泛了,没有应用场景,无法给出建议。比如说:
如果只是为了显示在Console上,直接写三句println就完毕了。
如果是要拦截另一个程序得到的按键输入,并篡改为QWE,想用Java难度就很高了。
--------------------编程问答-------------------- 楼主是想写一个LOL的按键外挂么?用纯Java不能实现这种系统级的程序,用C调用windows api写吧 --------------------编程问答-------------------- 楼主要想法好呀,赞,有时间我用C看好实现不 --------------------编程问答--------------------
好像有个东西叫按键精灵 --------------------编程问答-------------------- 想法不错,用什么语言啊想
--------------------编程问答-------------------- 擦 你是想些外挂吗~~~ --------------------编程问答--------------------
就是这个 --------------------编程问答-------------------- KeyAdapter KeyListener 这两个接口 --------------------编程问答-------------------- 可以使用java中的robot类和键盘监听类一起实现 --------------------编程问答-------------------- 需要一个buffer来记录你按了哪些键,可以用queue,有个timer来定时刷新这个quque。如果集齐三AAA黄金战神组合,就招唤QWE,然后开大点燃。
或者用state。设state 0 1 2 3。初试为0,如果按A,进入state1,在按A 入2,然后3。在state3里执行QWE,java awt robot可以模拟keypress。 同样有个timer,比如一秒中没有接到任何按键,state归0。 --------------------编程问答-------------------- 借用了1楼大神的code,加了点东西,在field里加 int state = 0;
frame.addKeyListener(new KeyListener(){
@Override
public void keyPressed(KeyEvent e) {
int keyCode=e.getKeyCode();
if(keyCode==KeyEvent.VK_A){
System.out.println("A");
switch (state) {
case 0:
state = 1;
break;
case 1:
state = 2;
break;
case 2:
state = 3;
case 3:
state = 0;
try {
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_Q);
robot.keyPress(KeyEvent.VK_W);
robot.keyPress(KeyEvent.VK_E);
} catch (AWTException e1) {
e1.printStackTrace();
}
break;
default:
state = 0;
break;
}
}else if(keyCode==KeyEvent.VK_Q){
System.out.print("Q ");
}
else if(keyCode==KeyEvent.VK_W){
System.out.print("W ");
}
else if(keyCode==KeyEvent.VK_E){
System.out.print("E ");
}
}
已试 可行:
A
A
A
Q W E --------------------编程问答-------------------- 楼上可行
补充:Java , Java SE