嘿,所以我正在为朋友开发具有随机延迟等的自动点击器,但他要求我使用 javafx 制作 UI。我说好的,但现在我需要按“r”键来切换自动点击器。我的代码如下,我决定了复选框,所以我可以知道它是否被切换,但我想这样做,以便我可以按 r 选中复选框,然后再次按取消选中,从而停止自动点击器。提前致谢。
public class MainFrame extends Application {
CheckBox toggleclick;
@Override
public void start(Stage primaryStage) {
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));
Text scenetitle = new Text("11.1 CPS Clicker");
scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 30));
grid.add(scenetitle, 0, 0, 2, 1);
CheckBox cb = new CheckBox();
cb.setText("Begin Clicking");
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().add(cb);
grid.add(hbBtn, 1, 4);
final Text actiontarget = new Text();
grid.add(actiontarget, 1, 6);
cb.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
while (true) {
try {
Mouse.sendLeftClick();
} catch (AWTException e1) {
e1.printStackTrace();
}
double deviation = 22;
double mean = 90;
int min = 43;
int max = 198;
Random r = new Random();
double randGauss = (r.nextGaussian() * deviation);
long delayPreClamp = Math.round(randGauss + mean);
long delay = (long) MathUtil.clamp(delayPreClamp, min, max);
try {
Thread.sleep(delay);
} catch (InterruptedException e2) {
e2.printStackTrace();
}
}
}
});
Scene scene = new Scene(grid, 325, 250);
primaryStage.setScene(scene);
primaryStage.show();
primaryStage.setTitle("AutoClicker");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
尝试创建一个新的 EventHandler 来定义按下键时的事件,如下所示:
cb.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
if("R".equals(ke.getText().toUpperCase() )) {
if(cb.isSelected()) {
cb.setSelected(false);
} else {
cb.setSelected(true);
}
}
});
ke.getText() 返回按下的键的值,如果是 R,则选中或取消选中复选框。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句