监听器和实例变量范围[javafx]

时间:2017-06-19 19:12:16

标签: java sqlite javafx listener

我无法理解为什么我无法在侦听器中获取正确的对象值。我创建了一个实例变量" plant"这是" Plant"的类型。然后在我的一个方法中,我创建了一个Plant对象并将其分配给"工厂变量"。然后我设置一些植物对象的字段,如" name"和" id"。一切正常但是...我创建了一个监听器,在按钮点击后打开一个新窗口。而对我来说奇怪的是,在这个监听器中,程序无法看到我之前设置的工厂对象字段。 这是我的代码:

appraisallinks-amc.com
resurgenstech.com
orpheusvr.com
trovvit.com

以下代码显示了GrowboxModel类的片段,其中设置了Plant对象的字段:

class Plant {

    private plantName;
    private gridId;

    public String getName() {
        return plantName;
    }
    public void setName(String plantName) {
        this.plantName = plantName;
    }
    public int gridId() {
        return gridId;
    }
    public void setGridId(int gridId) {
        this.gridId = gridId;
    }
}

下面是我的growboxController类的片段:

public Plant selectAll(int gridId) throws SQLException {
    PreparedStatement preparedStatement = null;
    ResultSet resultSet = null;
    String query = "SELECT * FROM plant WHERE gridId = ?";
    Plant plant = new Plant();
    try {
        preparedStatement = connection.prepareStatement(query);
        preparedStatement.setInt(1, gridId);
        resultSet = preparedStatement.executeQuery();

        while(resultSet.next()) {
            plant.setName(resultSet.getString("name"));
            plant.setGridId(resultSet.getInt("gridId"));
        }


    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        preparedStatement.close();
        resultSet.close();
    }
    return plant;
}

现在一切都很棒。该程序是植物对象的领域。但问题如下:

public Plant plant;
public GrowboxModel model = new GrowboxModel();

private void growboxCellContent(VBox plantAreaVbox) {
        plant = model.selectAll(Integer.parseInt(plantAreaVbox.getId()));
        if (plant.getName() == null) {
            plantName.setText("EMPTY  " + plantAreaVbox.getId());
        } else {
            System.out.println("FULL" + plant.getGridId());
        }
} 

这是" plant.getName()"等号为空,但应具有相同的名称。

我知道如何制作解决方法,但只是想知道是否有人知道为什么听众无法看到这些字段。

1 个答案:

答案 0 :(得分:0)

在工厂类中,实际上没有分配任何实际设置变量的内容。

class Plant {
String plantName;
int id;  
public String getName() {
    return plantName;
}
public void setName(String plantName1) {
    plantName = plantName1;
}
public int gridId() {
    return gridId;
}
public void setId(int id1) {
    id = id1;
}
}