在节点

时间:2017-04-30 20:23:48

标签: java mysql jdbc javafx fxmlloader

好吧我有点奇怪的可能很容易公平但我正在使用通过JDBC连接的sql数据库的java fx应用程序。一切都很好,除了一件事。按下按钮时,场景会发生变化,并且数据从数据库中拉出,这一切都完美无缺,调试显示正确的值是他们需要的,但是当我调用一个方法如label1.setText(someString)时;它抛出一个NPE。

所以我运行调试所有变量看起来都不错。然后我在节点本身做一个简单的打印它打印null我认为fxml注入处理实例化。我检查了fxml文件,所有内容都有一个fx-id,并且在课堂上提到了所有内容。它可能是一些非常愚蠢的事情。我们忽略了它。

这是抛出异常的方法,这个类包含mehtods start,main,handle和this方法

     public void insertData(ResultSet rsIn) {
                    try {

                        while (rsIn.next()) {
                            int housenumber = rsIn.getInt("housenumber");
                            String maintext = rsIn.getString("maintext");
                            String img1 = rsIn.getString("img1");
                            String img2 = rsIn.getString("img2");
                            String img3 = rsIn.getString("img3");
                            String img4 = rsIn.getString("img4");

 // scrollLab is of Text type
      scrollLab.setText(maintext);//here is where the NPE is thrown 

                        }

                    } catch (SQLException sql) {
                        sql.printStackTrace();

                    }
              }

另一个类包含所有与sql相关的方法和getStuff方法,其中Resultset rsIn来自

public void getstuff(String buttonid) {

        switch (buttonid) {

            case "winterfell":
                try {


                    conn = DriverManager.getConnection(DB_URL, USER, PASS);
                    Statement stark = conn.createStatement();
                    System.out.println("Fetching records");
                    String sql = "SELECT * FROM houseinfo WHERE housenumber = 1";
                    rs = stark.executeQuery(sql);
                    GOT_Map map = new GOT_Map();
                      map.insertData(rs);

                   }catch(SQLException e){}
                  break;

最后,handle方法启动进程,这是控制器类与引发异常的类相同

@Override
    public void handle(ActionEvent event) {
        Sql_handler sql = new Sql_handler();
        try {

// will load the new scene for all map buttons but will pull data from the database to fill blanks
            if (event.getSource() == winterfell) {
                System.out.println("winterfell clicked");

                //getting reference to the button's stage 
                Stage stageref = (Stage) winterfell.getScene().getWindow();
                inforoot = FXMLLoader.load(getClass().getResource("infoView.fxml"));
                stageref.setScene(scene2);
                sql.getstuff("winterfell");

这可能是一个简单的解决方案,我忽视了这两天没有停止的工作 非常感谢任何帮助

0 个答案:

没有答案