[英]How can i edit my code to count and display how many times each name appears on my list
[英]how can I make my javafx code count how many times I clicked on an image?
我制作了这个 java 代码,它在屏幕上的随机位置显示图像,每当我点击图像时,它就会移动到另一个随机位置。 我希望代码打印出“命中”并计算我命中图像的次数。 出于某种原因,它不断返回 1。
public class Main2 extends Application {
ImagePane root = new ImagePane();
@Override
public void start(Stage primaryStage) {
Scene scene = new Scene(root, 500,500);
scene.setCursor(Cursor.CROSSHAIR);
primaryStage.setScene(scene);
primaryStage.show();
}
public class Handler implements EventHandler<MouseEvent>{
public void handle(MouseEvent e) {
root.setPosition();
System.out.println("Hit");
int count = 1;
System.out.println(count++);
}
}
public class ImagePane extends Pane{
ImageView o = new ImageView();
Image image = new Image("file:head2.png");
public ImagePane() {
getChildren().add(o);
o.setImage(image);
o.setFitHeight(70);
o.setFitWidth(70);
o.setX(Math.random()*1080);
o.setY(Math.random()*1080);
o.setOnMouseClicked(new Handler());
}
public void setPosition() {
o.setX(Math.random()*1080);
o.setY(Math.random()*1080);
o.setOnMouseClicked(new Handler());
}
}
public static void main(String[] args) {
launch(args);
}
}
尝试将count
声明从handle()
移出。
public class Handler implements EventHandler<MouseEvent>{
int count;
public void handle(MouseEvent e) {
root.setPosition();
System.out.println("Hit");
System.out.println(count++);
}
}
在Main2
创建Handler
类的Main2
。
Handler handler = new Handler();
并使用此实例而不是每次都添加新的。
o.setOnMouseClicked(handler);
为此,您必须为 ImagePane 创建一个构造函数,并将handler
作为参数。
换句话说,您需要在每个地方使用相同的实例 od Handler。
试试这个,它对我有用
ImagePane root = new ImagePane();
@Override
public void start(Stage primaryStage) {
Scene scene = new Scene(root, 900, 1000);
scene.setCursor(Cursor.CROSSHAIR);
primaryStage.setScene(scene);
primaryStage.show();
}
int count = 1;
public class Handler implements EventHandler<MouseEvent> {
public void handle(MouseEvent e) {
root.setPosition();
System.out.println("Hit: " + count++);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.