【问题标题】:How to fill data in TableView in screen2 from screen1如何从screen1在screen2中的TableView中填充数据
【发布时间】:2014-03-05 13:24:51
【问题描述】:
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.java下面:

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;
}

当我单击登录按钮时,出现运行时错误。我做错了什么?

【问题讨论】:

  • 一些堆栈跟踪会有所帮助!

标签: java controller javafx tableview


【解决方案1】:

您可以通过

将controller1的引用传递给controller2
    Screen2DocumentController controller2 = (Screen2DocumentController)fxmlloader.getController();

将变量添加到 Screen2DocumentController

private Screen1DocumentController controller1;

向 Screen2DocumentController 添加一个方法

public void setScreen1DocumentController(Screen1DocumentController controller){this.contoller1 = controller; }

现在你可以在你的handlelogin方法中调用方法

((Screen2DocumentController)fxmlloader.getController()).setScreen1DocumentController(this);

现在您在控制器 2 中有一个控制器 1 的引用。

如果你现在向 Screen1DocumentController 添加一个方法,sayHello

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

您可以使用 Screen2DocumentController 调用它

controller1.sayHello("pavankumar");

希望有帮助

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 现在我可以将数据从 Screen1DocumentController 发送到 Screen2DocumentController 我读了这篇文章“stackoverflow.com/questions/12166786/…”这对于从控制器 1 发送数据到子控制器来说很好。但我希望数据从子控制器发送到控制器 1 .?
    猜你喜欢
    • 2020-05-10
    • 2021-04-27
    • 2016-04-21
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 2011-03-22
    相关资源
    最近更新 更多