在课外访问属性

时间:2013-08-04 18:39:09

标签: java javafx-2

请参阅此代码

    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.control.ButtonBuilder;
    import javafx.scene.layout.StackPane;
    import javafx.stage.Stage;

    public class Test extends Application {

        private String pageTitle;

        public static void main(String args[]) {
            launch(args);
        }

        @Override
        public void start(Stage stage) throws Exception {
            this.setPageTitle("Hello World");

            Button btn = ButtonBuilder.create()
                    .text("Test Button")
                    .onAction(new EventHandler<ActionEvent>() {
                        @Override
                        public void handle(ActionEvent actionEvent) {
                            // this handle should change the property if Test.pageTitle property
                            //this.setPageTitle("Change button");
                            System.out.println("Testing button action");
                        }
                    })
                    .build();

            StackPane root = new StackPane();
            root.getChildren().add(btn);

            stage.setTitle(getPageTitle());
            stage.setScene(new Scene(root, 400, 400));
            stage.show();
        }

        public String getPageTitle() {
            return pageTitle;
        }

        public void setPageTitle(String pageTitle) {
            this.pageTitle = pageTitle;
        }
    }

我希望每次点击按钮,都会改变应用程序的标题。 如何使事件处理程序可以访问Text class?

的属性

1 个答案:

答案 0 :(得分:3)

您应该参考Test class的当前实例

Test.this.setPageTitle("Change button");