[英]Swing: How to close JDialog programmatically from a controller?
我已經通過bean綁定(Netbeans)將JDialog綁定到了我的(單獨的)控制器類。 我的對話框有一個“關閉”按鈕。 此按鈕的action屬性綁定到控制器中的一個動作。
對話:
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;
}
}
在我的控制器中。
我對控制器內的對話框沒有任何引用。 我不想介紹一個,因為它打破了將事物綁定在一起的整個原理。
那么如何關閉對話框呢? 有沒有辦法將對話框實例綁定到控制器的屬性? 如果是這樣,怎么辦?
我現在沒有編譯器,但是如果我正確理解您想要的內容,則與此類似:
public void actionPerformed(ActionEvent e) {
Component component = (Component) e.getSource();
JDialog dialog = (JDialog) SwingUtilities.getRoot(component);
dialog.dispose();
}
我將在有機會進行編譯以及出現問題時進行查看。 希望能解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.