如何从另一个类访问JavaFX ImageView

时间:2017-10-23 21:34:13

标签: java javafx scope

我最近实现了一个简单的JavaFX GUI。我有一个扩展TableView的类,它引用了一个ImageView(构造函数参数)。一旦选择了一行。程序获取行的对象字符串。然后将其分配给ImageView。

这是原始代码,正在使用main方法。

enter image description here

        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访问不同的组件问题。

1 个答案:

答案 0 :(得分:0)

我找到了问题的解决方案!应该在imageView所在的类中声明侦听器的实现