Выяснить изображение, прикрепленное к изображению при вызове через обработчик событий JavaFX - PullRequest
0 голосов
/ 08 октября 2018

У меня есть обработчик событий, прикрепленный к 9 различным изображениям с пометкой от a.png до i.png, я пытаюсь выяснить способ определения, на каком изображении (ai) щелкнул пользователь, и выполнить логику для разных изображений.

Ниже приведен пример с одним изображением.

Image img = new Image("a.png");
ImageView pieceIV = new ImageView();
pieceIV.setImage(img);

pieceIV.setOnMouseClicked(gameLogic.MouseClickEvent);

public static EventHandler<MouseEvent> MouseClickEvent = new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent event) {

        // Need to figure out the images name or parse the name to the event handler somehow.

    }
};

Есть идеи?

С уважением, Бен.

1 Ответ

0 голосов
/ 08 октября 2018

Существует много простых способов определить, на какую ImageView была нажата кнопка.Вот пример использования setId() и getId():

public class FxTest extends Application {

    private String[] urls = {
                "https://findicons.com/files/icons/345/summer/128/cake.png",
                "http://icons.iconarchive.com/icons/atyourservice/service-categories/128/Sweets-icon.png",
                "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS_FkBgG3_ux0kCbfG8mcRHvdk1dYbZYsm2SFMS01YvA6B_zfH_kg",
              };

    private static int uid = 0;

    @Override
    public void start(Stage stage) {

        TilePane root = new TilePane(Orientation.HORIZONTAL,5,5);
        root.setPrefColumns(3);
        root.getChildren().addAll(getImageView(), getImageView(), getImageView());
        stage.setScene(new Scene(root));
        stage.show();
    }

    private ImageView getImageView() {

        Image image = new Image(urls[uid%3]);
        ImageView imageView = new ImageView(image);
        imageView.setId(String.valueOf(uid++)); 

        imageView.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                System.out.println("image id "+ imageView.getId() + " clicked");
            }
        });
        return imageView;
    }

    public static void main(String[] args) {
        launch(args);
    }
} 

(Касательно комментариев о mcve: приведенный выше код после добавления необходимых импортов может служить примером для mcve)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...