最有可能在FXML中包含以下内容:
<Button fx:id="forgot" onAction="#forgetPasswordClicked" />
这使您的按钮可以
forgot调用您的方法
forgetPasswordClicked()。但是,您没有定义要在单击按钮时执行的逻辑,而是第一次说:“单击此按钮时,
actionevent在我的按钮上放一个会叫
setUpWindow()“
forgot.setonAction(e -> ForgotPassword.setUpWindow());
因此,您的第一次单击“设置”按钮的逻辑。第二次单击实际上执行了它。要解决此问题,请立即使用您的逻辑,例如:
public void forgetPasswordClicked() { ForgotPassword.setUpWindow();}或不定义要在fxml中调用的方法,然后将按钮的初始化(设置动作侦听器)移至初始化,如下所示:
public class ControllerSignIn implements Initializable { @FXML private Button forgot; @FXML private Button back; @Override public void initialize(URL location, ResourceBundle resources) { forgot.setonAction(e -> ForgotPassword.setUpWindow()); back.setonAction(e -> ForgotPassword.closeWindow()); }}这也是为什么您的
signInClicked()方法从第一次单击开始就起作用的原因,因为它实际上是在执行逻辑,而不是先设置处理程序。



