Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从screen1在screen2的TableView中填充数据_Java_Controller_Javafx_Tableview - Fatal编程技术网

Java 如何从screen1在screen2的TableView中填充数据

Java 如何从screen1在screen2的TableView中填充数据,java,controller,javafx,tableview,Java,Controller,Javafx,Tableview,下面是Screen2DocumentController.java: public class Screen1DocumentController implements Initializable { /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { // TODO

下面是Screen2DocumentController.java:

public class Screen1DocumentController implements Initializable {

    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    

    @FXML public void handleLogin() throws IOException{
        Parent root = FXMLLoader.load(getClass().getResource("Screen2Document.fxml"));
        Scene scene = new Scene(root);

        Stage stage = new Stage();
        stage.setScene(scene);
        stage.show();
    }

    @FXML Button btnLogin;


}
公共类Screen2DocumentController实现可初始化{
/**
*初始化控制器类。
*/
@凌驾
公共void初始化(URL、ResourceBundle rb){
//待办事项
报告员;
r=新报告详情(“pavan”);
rptDtls.add(r);
rptDtls.add(新报告详情(“Viajy”);
rptDtls.add(新报告详情(“sharat”);
rptDtls.add(新报告详情(“sandeep”);
rptDtls.add(新报告详情(“bhaskar”);
添加(新报告详情(“nokal”);
}    
私有ObservableList rptDtls=FXCollections.observableArrayList();
@FXML TableView-tblData;
@FXML表列tblCData;
}

当我点击登录按钮时,我得到了运行时错误。我做错了什么?

首先将FXMLLoader调用放入try/catch以获取详细信息
关于错误。我猜您到Screen2Document.fxml的路径不正确,或者ReportDetails的导入语句缺失?

您可以通过以下方式将controller1的引用传递给controller2

public class Screen2DocumentController implements Initializable {

    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
        ReportDetails r;
        r = new ReportDetails("pavan");
        rptDtls.add(r);
        rptDtls.add(new ReportDetails("Viajy"));
        rptDtls.add(new ReportDetails("sharat"));
        rptDtls.add(new ReportDetails("sandeep"));
        rptDtls.add(new ReportDetails("bhaskar"));
        rptDtls.add(new ReportDetails("nokal"));

    }    

    private ObservableList<ReportDetails> rptDtls =  FXCollections.observableArrayList();
    @FXML TableView tblData;
    @FXML TableColumn<ReportDetails,String> tblCData;
}
将变量添加到Screen2DocumentController

    Screen2DocumentController controller2 = (Screen2DocumentController)fxmlloader.getController();
private Screen1DocumentController controller1;
向Screen2DocumentController添加方法

    Screen2DocumentController controller2 = (Screen2DocumentController)fxmlloader.getController();
private Screen1DocumentController controller1;
现在可以在handlelogin方法中调用方法

((Screen2DocumentController)fxmlloader.getController()).setScreen1DocumentController(此)

现在您在controller2中有一个controller1的引用

如果您现在向Screen1DocumentController添加一个方法,请说Hello

public void setScreen1DocumentController(Screen1DocumentController controller){this.contoller1 = controller; }
您可以通过使用从Screen2DocumentController调用它

public void sayHello(String name){ System.out.println("Hello "+name);}

希望有帮助

一些堆栈跟踪将有帮助!现在我可以将数据从Screen1DocumentController发送到Screen2DocumentController我读了这篇文章“这对于将数据从controller1发送到controller1很好。但是我希望数据从controller1发送到controller1。”。?