YZRHANYU 2022-03-16 12:28 采纳率: 57.1%
浏览 52
已结题

动力节点javase图书管理系统项目的页面刷新功能的实现

在动力节点javase图书管理系统项目视频的24P,添加借阅数据实现页面刷新功能
视频讲解了当在图书管理页面选中图书点击借阅,选中用户借阅后,图书管理页面的图书状态会从入库刷新为出借

img

视频讲解的给图书管理页面添加刷新的步骤
1. 需要刷新图书管理的界面,就需要拿到图书管理界面的对象,调用refresh()方法,
2. 在BookLendViewCtrl.java中当前的是没有的
3. 找到图书查询的界面:BookViewCtrl,在图书查询界面上有一个成员变量( private TableView bookTableView;),
4. 将成员变量从BookViewCtrl复制到在BookLendViewCtrl中,加上get,set方法
5. 然后到add()方法中调用 bookTableView.refersh() 方法刷新,刷新图书查询界面中的数据
6. 需要在查询界面中将这个变量传过去, 找到lend方法, 里面调用了 InitLendStage() 方法,点过去
7. 进入 BookViewCtrl 中的initLendStage 方法
8. 通过 controller传过去调用 controller 中的set方法 controller.setBookTableView(bookTableView);

我尝试进行的对借阅管理页面添加刷新的步骤以及状况
想要在add方法中刷新借阅数据,而不是每次都手动刷新
那么根据视频说的同样的方法 调用refresh 方法,
在BookLendViewCtrl.java中当前的是没有借阅数据界面的对象的

  1. 找到图书查询的界面:BookViewCtrl
        private TableView<Lend> lendTableView; // 在图书查询界面上是没有这个成员变量的!!!
      //因此我手动添加了
         private TableView<Lend> lendTableView;
  1. 将成员变量从BookViewCtrl复制到在BookLendViewCtrl中,加上get,set方法
  2. 然后到add()方法中调用 lendTableView.refersh() 方法刷新,刷新图书查询界面中的数据
  3. 需要在查询界面中将这个变量传过去,
  4. 找到lend方法, 里面调用了 InitLendStage() 方法,点过去
  5. 进入 BookViewCtrl 中的initLendStage 方法
  6. 通过 controller传过去.调用 controller 中的set方法 controller.setBookTableView(bookTableView); 因为对 tableView 这个东西不理解是什么,但是,先直接模仿套用了
  //  套用的代码
                BookLendViewCtrl controller = (BookLendViewCtrl)loader.getController();
                controller.setBookTableView(bookTableView);
                controller.setLendTableView(lendTableView); 

问题代码1:

        public class BookLendViewCtrl {

                
                 private TableView<Book> bookTableView;
            
                 private TableView<Lend> lendTableView;
                
                private void add() {

                int userId =Integer.parseInt(userIdField.getText());

                int bookId=Integer.parseInt(bookIdField.getText());
        //        这里改的是界面的数据
                book.setStatus(Constant.STATUS_LEND);
                lendService.add(bookId,userId);
        //        改完图书界面数据之后刷新
                bookTableView.refresh();
                // 借阅界面刷新
                lendTableView.refresh();   // 这里报错空指针异常
                stage.close();
            }

            lendTableView 和 bookTableView set get 方法都加上了!
}

图片1

img

    运行结果:添加借阅数据时,点击提交并不会执行完成,界面将不在变动,重新打开可以看到数据添加进去了,但是页面刷新失败
    在自己加的页面刷新的那行代码上出现空指针异常???? 

问题代码2

        public class BookViewCtrl implements Initializable {

            @FXML
            private TableView<Book> bookTableView;

            @FXML
            private TableView<Lend> lendTableView;  (这里 灰色:Private field 'lendTableView' is never assigned)


             private void initLendStage(Book book) throws IOException {
                BookLendViewCtrl controller = (BookLendViewCtrl)loader.getController();
                controller.setBookTableView(bookTableView);
                controller.setLendTableView(lendTableView);
             }
        }


图片2

img

  • 写回答

1条回答 默认 最新

  • simplep5 2022-03-17 17:11
    关注

    你在BookViewCtrl类中的成员变量lendTableView是空的,lendTableView跟fxml界面中TableView标签中的id是对应的。

    这样加上FXML注解试试看

    public class BookLendViewCtrl {
     
                    @FXML
                     private TableView<Book> bookTableView;
                    @FXML
                     private TableView<Lend> lendTableView;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月1日
  • 已采纳回答 3月24日
  • 修改了问题 3月16日
  • 创建了问题 3月16日

悬赏问题

  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛