事件处理程序如何工作?

时间:2015-09-06 11:10:52

标签: javafx-8

我是Java的新手,因为我正在经历事件处理,我无法理解事件处理程序是如何工作的。我会尽力解释我的问题。假设我有以下代码,只需启动JavaFX应用程序并在舞台上绘制一条线和一个按钮:

public class Understanding extends Application
{

    Linepane lpane = new Linepane();


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


    }

    @Override
    public void start(Stage stage) throws Exception 
    {


        Button bt = new Button("change");
        stage.setTitle("Understand");
        BorderPane bpane = new BorderPane();
        bpane.setBottom(bt);
        bpane.setCenter(lpane);
        bt.setOnAction(new Handler());
        Scene scene = new Scene(bpane, 300, 300);
        stage.setScene(scene);
        stage.show();

    }
    public class Handler implements EventHandler<ActionEvent>
    {

        @Override
        public void handle(ActionEvent arg0) 
        {

            lpane.change();

        }

    }
}

public class Linepane extends StackPane
{
    Line line = new Line(1,1,50,50);

    public Linepane()
    {

        this.getChildren().add(line);
    }

    public void change()
    {
        line.setEndX(100);
        line.setEndY(100);
    }
}

所有这个程序都是绘制一条线并在单击按钮更改时更改行的长度,但是一旦程序运行,该怎么可能调用start方法并且代码从第一行到最后一行运行显示阶段(stage.show())以及如何更改行的长度当单击按钮时,整个程序再次运行,或者程序只是停留在单击按钮时要执行的操作的行上并在单击按钮后立即运行该部分代码?

1 个答案:

答案 0 :(得分:0)

Application.launch(args)构建JavaFX应用程序线程之后

。在此应用程序线程中,将创建一个类型为Understanding(和一个Stage)的对象。创建完成后理解#start(..)将被调用并处理,直到stage.show()。

在调用stage.show()之后,JavaFX应用程序线程仍在运行并处理用户输入事件。当用户单击Button bt时,JavaFX应用程序线程处理此事件并调用Handler对象的handle方法。

您的程序将不再运行并再次运行到stage.show(),只有JavaFX应用程序线程反复运行并侦听事件。对于每个匹配事件,它会调用应用程序的匹配方法。

了解更多详情:http://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html