在类中创建事件处理程序方法的适当方法?

时间:2016-01-13 15:09:27

标签: java oop javafx

我编写了一个JavaFX程序,它在'start'方法中有几个事件处理程序。这些事件处理程序负责切换应用程序场景,它们工作正常,但出于组织原因,我希望在Application类下面的类中定义代码。我为程序编写的类都对应于程序中的特定场景,我想将这些事件处理程序方法中的每一个都包含在相关场景中。但是,这样做需要将Stage对象作为参数传递给类构造函数,因为应用程序的阶段只能在start方法中可见。

理想情况下,我想要做的是在传递两个对象时运行事件侦听器方法,这两个对象都是我定义的场景类。例如:

W

作为参考,我的start方法中的一个事件处理程序:

CredsForm credsForm = new CredsForm();

TicketForm ticketForm = new TicketForm();

ticketForm.runTicketFormHandler(ticketForm, credsForm); 

我想把这个事件处理程序放在以下的类中:

    //inputScene 'Enter' key event handler
    ticketForm.inputScene.setOnKeyPressed(new EventHandler <KeyEvent>() {
        @Override
        public void handle (KeyEvent keyEvent) {
            if (KeyCode.ENTER == keyEvent.getCode()){

                    //make request  
                    try {
                        ticketForm.makeInputRequest(credsForm.sessionCreds);
                     } catch (IOException ex){
                         System.out.println(ex);
                         credsForm.inputTitle.setText("Issue Encountered – Sorry!");
                         credsForm.inputSubtitle.setText("Your Zendesk Credentials May Be Invalid");
                         stage.setScene(credsForm.inputScene);
                     }

                    //status-line=bad, send user to credentials page - otherwise use confirmation page
                    if (!ticketForm.responseLine.equals("HTTP/1.1 201 Created")) {
                        credsForm.inputTitle.setText("Issue Encountered – Sorry!");
                        credsForm.inputSubtitle.setText("Your Zendesk Credentials May Be Invalid");
                        stage.setScene(credsForm.inputScene);
                    }
                    else {
                        stage.setScene(confirmPage.scene);
                   }
                }
            }
    });

感谢您的帮助。我正在讨论是否应该在程序员堆栈交换下或此处发布此问题,但如果有更好的地方可以提出这类问题,请告诉我。

0 个答案:

没有答案