我有一个类(TaskInOurProgram),它在constructer中包含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,它显示了这个对象列表。那么它看起来像这样。
对象从一开始就不存在,需要通过单击按钮ADD TASK添加它们,因为它是observableList,它会在添加后立即显示这个“任务”。
我需要什么:我需要的是在控制器内部创建方法,点击“暂停”ImageView后会执行某些操作。我真的不知道该怎么做,我不知何故在想着听众。在此之前,我需要将click事件放在imageView上。
请问你们,帮助我吗?谢谢你的想法。
答案 0 :(得分:0)
尝试使用带有Graphic的Button而不是普通的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
}
答案 1 :(得分:0)
使用setOnMouseClicked()
方法imageView
来处理点击事件。
pauseTask.setOnMouseClicked(new EventHandler<Event>() {
@Override
public void handle(Event event)
{
pauseTask();
}
});
然后你可以用其他方法处理它
void pauseTask()
{
}