簡體   English   中英

JavaFx通過另一個控制器調用方法

[英]JavaFx Call a method through from another controller

我想在單擊按鈕時從interface_pasienController上的Interface_adminController調用autoRefresh()方法。 但是有一個錯誤“ java.lang.NullPointerException”。 代碼有什么問題?

interface_pasienController.java

@Override
   public void initialize(URL url, ResourceBundle rb) {

   }

@FXML
private int actionAmbilAntrian(ActionEvent event) throws SQLException, DocumentException, FileNotFoundException, IOException {
        System.out.println("You clicked me!");

        DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        Date date = new Date();
        String tanggal = dateFormat.format(date);

        DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
        Date time = new Date();
        String waktu = timeFormat.format(time);

        System.out.println(dateFormat.format(date));
        System.out.println(timeFormat.format(time));

        String sql = "INSERT INTO antrian VALUES(?,?,?,?,?,?)";

        int id = autonumber();
        try (Connection conn = connection.connection();
             PreparedStatement pstmt = conn.prepareStatement(sql)
            ){                                  
                pstmt.setInt(1, id);
                pstmt.setString(2, tanggal);
                pstmt.setInt(3, id);
                pstmt.setString(4, waktu);
                pstmt.setString(5, "");
                pstmt.setBoolean(6, false);
                pstmt.executeUpdate();

                System.out.println("Insert to Database");

                System.out.println("Create PDF File");
                String filename = id + ".pdf";

                Document document = new Document();
                PdfWriter.getInstance(document, new FileOutputStream("D://"+id+".pdf"));
                document.open();
                if(id < 10){
                    document.add(new Paragraph("00"+ id));
                } else if(id > 9 && id < 99){
                    document.add(new Paragraph("0"+ id));
                } else if(id > 99){
                    document.add(new Paragraph(id));
                }
                document.add(new Paragraph("Tanggal: " + tanggal));
                document.add(new Paragraph("Waktu: " + waktu));
                document.close();

                FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/interface_admin.fxml"));
                Interface_adminController adminC = loader.getController();
                System.out.println("adminC = "+adminC);
                adminC.autoRefresh(); // an error: java.lang.NullPointerException


                System.out.println("itext PDF program executed");
            } catch(SQLException e){
                System.out.println(e);
                System.out.println("Failed");
            }
        return id;
}

Interface_adminController.java

@Override
    public void initialize(URL url, ResourceBundle rb) {
        showItem();
    }

    void autoRefresh() {
        final LongProperty lastUpdate = new SimpleLongProperty();
        final long minUpdateInterval = 0 ;

        AnimationTimer timer = new AnimationTimer() {

            @Override
            public void handle(long now) {
                try{
                    if (now - lastUpdate.get() > minUpdateInterval) {
                        showItem();
                        lastUpdate.set(now);
                    }
                } catch(Exception e){
                    System.out.println(e);
                }
            }
        };
        timer.start();
    }

線程“ JavaFX應用程序線程”中的異常java.lang.RuntimeException:java.lang.reflect.InvocationTargetException原因:antrianpasienfarmasi.interface_pasienController.actionAmbilAntrian(interface_pasienController.java:101)處的java.lang.NullPointerException ... 58更多

如果要從Controller調用函數,則必須執行

loader.load();
Interface_adminController adminC = loader.getController();

您首先必須運行loader.load()然后才能獲取Controller。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM