【问题标题】:JavaFX passing layout as parameterJavaFX 将布局作为参数传递
【发布时间】:2014-01-18 15:58:05
【问题描述】:

为什么布局参数需要声明为final?

如下:

@Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Login form");

        BorderPane borderLayout = new BorderPane();
        borderLayout.setCenter(login(borderLayout));


        Scene scene = new Scene(borderLayout, 300, 275);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

private GridPane login(final BorderPane rootLayout){  //<<--
     // CODE
     return grid;
}

编辑:最终的 BorderLayout 应该是 BorderPane。

【问题讨论】:

  • 在这里查看同一问题的答案stackoverflow.com/questions/4930114/…
  • 你为什么要使用BorderLayout?另外,您是否意识到您在登录方法中传递 BorderPane 实例而不是 BorderLayout 实例
  • @csmckelvey 谢谢!当然是有道理的,但我在登录方法中所做的实际上是在做 rootLayout.setCenter(otherMethod(rootLayout)) 或者这不是你改变它的意思吗?因为它当然不会限制我这样做。
  • @brano 我为这个问题写得很快,它应该是 BorderPane。
  • 那么你得到了答案。

标签: java layout javafx


【解决方案1】:

取自用户templatetypedef:

您可能希望将参数标记为 final 的主要原因有两个。首先,如果您打算在匿名内部类中使用该参数,那么您必须将其标记为 final,以便可以在该类中引用它。这实际上是一个非常常见的将参数标记为 final 的用例。

将参数标记为 final 的另一个常见原因是防止自己意外覆盖它们。如果您真的不想更改参数,那么也许您应该将它们标记为 final,这样如果您真的这样做了,您将在编译时收到错误,而不是在运行时发现您的代码有错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    相关资源
    最近更新 更多