gpt4 book ai didi

java - 使用 JavaFX 的确认对话框

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:39 25 4
gpt4 key购买 nike

我正在使用这个 Dialog Class做我的项目。当我尝试使用确认对话框时,我必须为"is"按钮创建一个事件处理程序,并将其传递到方法调用中。我做到了,但是当我点击注销时,我的事件在我点击确认按钮之前执行。

方法调用

public void btnSairClicked(ActionEvent event) {

Dialog.buildConfirmation("Confirmar", "Deseja realmente sair?")
.addYesButton(actionPerformed(event))
.addNoButton(null)
.build()
.show();

}

private EventHandler actionPerformed(ActionEvent event) {
String loginUrl = "http://" + Constants.TARGET_HOST + ":" + Constants.TARGET_PORT + Constants.TARGET_SERVICE_LOGOUT_PATH;
try {
JSONObject json = HttpUtil.getJSON(false, loginUrl, null, null, null);
loginManager.logout();
} catch (IOException ex) {
Logger.getLogger(MainViewController.class
.getName()).log(Level.SEVERE, null, ex);
}
return null;
}

对话框类:

public static Builder buildConfirmation(String title, String message) {
return buildConfirmation(title, message, null);
}

public static Builder buildConfirmation(String title, String message, Window owner) {
return new Builder()
.create()
.setOwner(owner)
.setTitle(title)
.setConfirmationIcon()
.setMessage(message);
}

public Builder addYesButton(EventHandler actionHandler) {
return addConfirmationButton("Sim", actionHandler);
}

protected Builder addConfirmationButton(String buttonCaption, final EventHandler actionHandler) {
Button confirmationButton = new Button(buttonCaption);
confirmationButton.setMinWidth(BUTTON_WIDTH);
confirmationButton.setOnAction(new EventHandler<ActionEvent>() {

public void handle(ActionEvent t) {
stage.close();
if (actionHandler != null)
actionHandler.handle(t);
}
});

stage.buttonsPanel.getChildren().add(confirmationButton);
return this;
}

最佳答案

你实际上传递了一个返回 EventHandler 的函数,因此它返回一个 EventHandler 是真的,它实际上是函数期望的参数(你的函数有return null;,我真的不知道)。这也是一个在您分配时执行的函数(这基本上是一个调用)。因此,您首先需要创建一个完美的处理程序,而不仅仅是一个返回 EventHandler 的函数。现在您的点击事件可以处理了……您可以通过在该对话框行放置一个断点来调试它并检查我说的内容。

class MyHandler implements EventHandler<Event> {

private String button = "";

public MyHandler(String s) {
this.button = s;
}

@Override
public void handle(Event t) {
if(button.equals("Yes")) {
// do yes
System.out.println("Yes");
}
else {
// do no
System.out.println("No");
}
}

}

对于 Dialog,你需要像下面那样做

 Dialog.buildConfirmation("Confirmar", "Deseja realmente sair?")
.addYesButton(new MyHandler("Yes"))
.addNoButton(new MyHandler("No"))
.build()
.show();

希望这对您有所帮助。

编辑:

我已经创建了一个构造函数,它接受 String pass yes 来执行基于 yes 的操作等等。检查字符串并执行操作。

关于java - 使用 JavaFX 的确认对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14835691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com