Выполните событие после нажатия на ImageView, который находится внутри tableView, который содержит observableArray - PullRequest
0 голосов
/ 08 мая 2018

У меня есть класс (TaskInOurProgram), который содержит ImageView в конструкторе. Вот небольшой фрагмент кода - объявление, а затем конструктор:

private ImageView closeTask;
private ImageView pauseTask;
private final Image pauseImage = new Image("file:images/pause.png");
private final Image closeImage = new Image("file:images/close.png");

public TaskInOurProgram(String name, String configName, String extensionOfTheFile) {
    this.nameOfTheFile = name;
    this.configName = configName;
    this.extensionOfTheFile = extensionOfTheFile;
    this.closeTask = new ImageView();
    closeTask.setImage(closeImage);
    this.pauseTask = new ImageView();
    pauseTask.setImage(pauseImage);       
}

Тогда у меня есть observableArrayList, который содержит многие из этих объектов TaskInOurProgram.

private ObservableList<TaskInOurProgram> tasksInTheTableView = FXCollections.observableArrayList();

У меня есть tableView, который отображает этот список объектов. Итак, это выглядит так.

enter image description here

Объект не существует с самого начала, его нужно добавить, нажав на кнопку ADD TASK, и, поскольку это observableList, он покажет эти «задачи» сразу после добавления.

ЧТО МНЕ НУЖНО: Мне нужно создать метод внутри контроллера, который будет что-то делать после нажатия на «паузу» ImageView. Я действительно не знаю, как это сделать, я как-то думал о слушателях. А до этого мне нужно поставить событие click на imageView.

Ребята, не могли бы вы помочь мне с этим? Спасибо за любую идею.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Используйте setOnMouseClicked() метод для imageView для обработки событий щелчка.

pauseTask.setOnMouseClicked(new EventHandler<Event>() {

            @Override
            public void handle(Event event)
            {
                pauseTask();
            }
        });

Затем вы можете обработать его другим методом

void pauseTask()
{

}
0 голосов
/ 08 мая 2018

Попробуйте использовать кнопку с графикой вместо простого ImageView.Таким образом, вы можете использовать метод Button.setOnAction().

Там, где вы в данный момент определяете свой ImageView, измените его следующим образом:

this.pauseTask = new Button("", new ImageView(pauseImage));
this.pauseTask.setOnAction(new EventHandler<ActionEvent>(){
    @Override
    public void handle(ActionEvent event) {
        pause();
    }
});

Вы можете определитьметод где-то еще в вашей программе, что-то вроде этого:

private void pause() {
    // your code here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...