gpt4 book ai didi

java - Swing:如何从 Controller 以编程方式关闭 JDialog?

转载 作者:行者123 更新时间:2023-12-02 15:18:31 24 4
gpt4 key购买 nike

我有一个 JDialog 通过 beans 绑定(bind) (Netbeans) 绑定(bind)到我的(单独的) Controller 类。我的对话框有一个“关闭”按钮。此按钮的操作属性绑定(bind)到我的 Controller 中的操作。

对话框:

public class AppVersionCheckDialog extends javax.swing.JDialog {
...
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, controller, org.jdesktop.beansbinding.ELProperty.create("${closeButtonActionListener}"), btnOk, org.jdesktop.beansbinding.BeanProperty.create("action"));
bindingGroup.addBinding(binding);
...
}

所以基本上我得到了

public class AppVersionCheckDialogController extends AbstractController {

private final Action closeAction = new AbstractAction("Close") {
@Override
public void actionPerformed(ActionEvent e) {
// dialog.dispose() - no reference of dialog instance here
}
};


public Action getCloseButtonActionListener(){
return closeAction;
}
}

在我的 Controller 中。

我对 Controller 内的对话框没有任何引用。我不想介绍一个,因为它打破了将事物绑定(bind)在一起的整个原则。

那么如何关闭对话框呢?有没有办法将对话框实例绑定(bind)到我的 Controller 的属性?如果是,怎么办?

最佳答案

我现在没有编译器,但如果我理解正确的话,你想要的是类似这样的:

public void actionPerformed(ActionEvent e) {
Component component = (Component) e.getSource();
JDialog dialog = (JDialog) SwingUtilities.getRoot(component);
dialog.dispose();
}

等有机会再编译看看有没有问题。我希望它能解决您的问题。

关于java - Swing:如何从 Controller 以编程方式关闭 JDialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38912291/

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