我最近实现了一个简单的JavaFX GUI。我有一个扩展TableView的类,它引用了一个ImageView(构造函数参数)。一旦选择了一行。程序获取行的对象字符串。然后将其分配给ImageView。
这是原始代码,正在使用main方法。
tableView.getSelectionModel().selectedItemProperty().addListener((obs, oldSelection, newSelection) -> {
if (newSelection != null) {
String imageID = tableView.getSelectionModel().getSelectedItem().IMAGE_ID;
try{
Image image = new Image(getClass().getResource("/resources/fellowshipcards/"+imageID).toURI().toString());
cardImageView.setImage(image);
}catch(Exception ex){}
}
});
但是当我尝试将其添加为参数时 - 会发生错误。无法访问ImageView。简单的imageView.setImage(image)不会执行。
public TableViewCenter(ImageView cardImageView){
...
try{
Image image = new Image(getClass().getResource("/resources/fellowshipcards/"+imageID).toURI().toString());
System.out.println(imageID);
cardImageView.setImage(image);
}catch(Exception ex){}
选择行后,系统将执行所有操作,而不使用.setImage(image)函数。
这可能是范围问题,或者是JavaFX访问不同的组件问题。
答案 0 :(得分:0)
我找到了问题的解决方案!应该在imageView所在的类中声明侦听器的实现