Как получить идентификатор ImageView при использовании метода onMouseClicked? - PullRequest
0 голосов
/ 17 февраля 2019

У меня проблемы с получением идентификатора моих изображений, используя метод onMouseClicked.В этом приложении у меня есть 20 ImageViews, и когда я нажимаю на один из них, он должен изменить изображение на изображение из моего файла.Пока у меня есть метод imagePicker, в котором я тестировал изменение изображения с помощью imgViewOne, который является идентификатором первого ImageView, и это прекрасно работает.

public void imagePicker() {
    try {
        File file = new File("/home/zoran/eclipse-workspace/Pogodi tko sam/bin/application/iks.png");
        String localUrl = file.toURI().toURL().toString();
        Image image = new Image(localUrl);
        //imgViewOne.setImage(image);
    } catch (MalformedURLException e) {
        System.out.println("Malformed url ex");
        e.printStackTrace();
    }           
}

Я нашел здесь несколько ответов о получении идентификатора текстовых полей или еще что-тоэлементы, но все они имеют обработчики событий, которые можно назвать event.getID(). Но здесь нет обработчика событий, поэтому я не знаю, как получить ID.Я попытался установить аргумент в imagePicker, например, imagePicker (ImageView v), а затем вызвать String id = v.getID();, но я не смог изменить изображение для этого атрибута.Если кто-нибудь знает решение, пожалуйста, поделитесь со мной.Заранее спасибо!

Редактировать: у каждого ImageView есть метод onMouseCliked с идентификатором imagePicker. Поэтому каждый раз, когда вы нажимаете, он переходит к этому методу.

      <ImageView fx:id="trinaesta" onMouseClicked="#imagePicker" fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true" GridPane.rowIndex="3">

1 Ответ

0 голосов
/ 17 февраля 2019

Вы используете обработчик события метода контроллера , что означает, что ваш метод может и обычно должен иметь один параметр соответствующего подкласса Event.В вашем случае параметр должен быть MouseEvent, так как вы устанавливаете обработчик onMouseClicked.Затем вы можете получить источник события, который будет соответствовать ImageView (обработчик был добавлен к ImageView).

public void imagePicker(MouseEvent event) {
    event.consume();
    try {
        File file = new File("/home/zoran/eclipse-workspace/Pogodi tko sam/bin/application/iks.png");
        String localUrl = file.toURI().toURL().toString();
        Image image = new Image(localUrl);
        ((ImageView) event.getSource()).setImage(image); // set image on clicked ImageView
    } catch (MalformedURLException e) {
        System.out.println("Malformed url ex");
        e.printStackTrace();
    }           
}

Обратите внимание, что getSource возвращает Object, поэтому вы 'Придется привести к соответствующему типу.

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