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类的属性?

4

1 回答 1

3

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

Test.this.setPageTitle("Change button");
于 2013-08-04T18:44:41.503 回答