【发布时间】:2020-09-01 05:16:26
【问题描述】:
我是 Java 新手,我正在尝试制作一个自动点击器。它是这样工作的。当你点击一个按钮时,应用程序开始点击(当你按下 s 时也可以工作),当你按下“w”时,应用程序停止点击。我目前的主要问题是我无法让我的应用程序点击:V。 (我也有一个“main.java”用于启动)这是我的代码 vvvvvvv
package copy;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.KeyAdapter;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Game
implements ActionListener{
JFrame frame;
JLabel label;
JButton button;
Action ON;
Action OFF;
private static Robot bot;
public static boolean status = false;
Game(){
ON = new statusON();
OFF = new statusOFF();
frame = new JFrame("Bullet Chicken Clicker");
label = new JLabel();
button = new JButton("turn on?");
frame.setSize(400, 400);
frame.setLocation(600, 150);
frame.setVisible(true);
frame.setAlwaysOnTop(true);
frame.add(label);
frame.add(button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
label.getInputMap().put(KeyStroke.getKeyStroke('w'), "OFF");
label.getActionMap().put("OFF", OFF);
label.getInputMap().put(KeyStroke.getKeyStroke('w'), "upAction");
label.getActionMap().put("upAction", ON);
label.getInputMap().put(KeyStroke.getKeyStroke('s'), "downAction");
label.getActionMap().put("downAction", OFF);
button.setPreferredSize(new Dimension(40, 40));
button.setOpaque(true);
button.setForeground(Color.BLACK);
button.setBounds(125, 150, 150, 30);
button.setVisible(true);
button.addActionListener(this);
button.setFocusable(false);
}
private void clicky() {
while (status == true);
bot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
bot.delay(300);
bot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
bot.delay(300);
}
public static void robot() {
try {
bot = new Robot();
} catch (AWTException e2) {
e2.printStackTrace();
}
}
public class statusON extends AbstractAction{
@Override
public void actionPerformed(ActionEvent e) {
status = true;
System.out.print(status);
}
}
public class statusOFF extends AbstractAction{
@Override
public void actionPerformed(ActionEvent e) {
status = false;
System.out.print(status);
}
}
@Override
public void actionPerformed(ActionEvent e) {
status = true;
System.out.print(status);
}
}
【问题讨论】:
-
请不要转发问题。 Stack Overflow 是一个问答网站,而不是留言板。重新发布只会使网站变得混乱,这实际上使您和其他人更难找到答案。您应该删除旧问题或这个问题,因为它们在本质上是相同的。
-
好的,我尽量不要
-
如果您希望 Swing 开发人员注意到您的问题,请包含“Swing”标签。
-
我根本无法让我的机器人点击。有什么建议吗? - 我不知道你期望发生什么。如果您希望机器人单击框架上的组件,则需要将机器人的位置设置为框架上组件的位置。我认为您可以使用
getLocationOnScreen()方法。不要将循环代码用于简单的测试。按下/释放之间的延迟可能需要更短发布适当的minimal reproducible example 来演示问题。你只需要一个框架。但是,我建议您不要使用机器人,通常有更好的选择。 -
好吧,忘记我所说的一切。我终于让机器人点击了,但键绑定仍然不起作用。当机器人开始点击时,所有键绑定都不再起作用了。
标签: java swing jframe key-bindings