[英]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.