簡體   English   中英

Swing:如何從控制器以編程方式關閉JDialog?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM