簡體   English   中英

試圖在單擊“取消”按鈕時設置擴展JXPanel的類

[英]Trying to dispose a class which extends JXPanel on click of Cancel Button

我需要在單擊“ Cancel按鈕時JXPanel一個擴展JXPanel的類,似乎無法找到任何方法。

我有一個A類,在單擊按鈕A時具有按鈕A,因此正在調用B類。 B類具有顯示所有內容的顯示方法,並調用ClassC

class A : in actionPerformed() 
if (e.getSource().equals(buttonA )){
            try {
                new ClassB(parent);
            } catch (BusinessException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }

In class B


private void display() throws BusinessException{
        dialog = new JDialog(parent, "Dialog");
        dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        dialog.setContentPane(createContentPane());
        dialog.setModal(true);
        //dialog.setBackground(Color.WHITE);
        dialog.setMinimumSize(new Dimension(1190, 200));
        //dialog.setMaximumSize(new Dimension(1190, 500));
        dialog.pack();
        dialog.setLocationRelativeTo(parent);
        dialog.setVisible(true);
    }

in createContentPane() 

    public JPanel createContentPanel() throws BusinessException{
        JPanel panel = new JPanel(new CardLayout());
        panel.setBackground(Color.WHITE);

        panel.add("New Dialog", new ClassC(parent));

        return panel;
    }

現在我在ClassC中有我的“取消”按鈕,單擊此Class CI,需要關閉ClassB的對話框

首選的解決方案是定義一種可以傳遞給類C的控制器,該控制器可用於通過某些動作(例如取消動作)提供通知。

控制器將負責根據動作/事件確定應執行的操作

這是Model-View-Controller的示例

另一種解決方案是允許對話框本身控制取消(以及其他相關的用戶操作),因為“取消”對於類C並不總是有意義,您可以使用類生成的值,也可以不使用, C級負責管理此任務(這就是模型的來歷)

另一個解決方案是將對話框的引用傳遞給類C,但這會在對話框和類之間產生緊密的耦合,並不必要地公開對話框

另一種解決方案是使用SwingUtilities.windowForComponent ,它允許您獲取對包含該類的窗口的引用,但這對如何使用該類做出了假設。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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