我编写了一个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);
}
}
}
});
感谢您的帮助。我正在讨论是否应该在程序员堆栈交换下或此处发布此问题,但如果有更好的地方可以提出这类问题,请告诉我。