簡體   English   中英

Java setVisible從一個JFrame類到另一個?

[英]Java setVisible from one JFrame class to another?

我有一個主JFrame ,它創建一個基本通知JFrame類的實例。

我的從主JFrame創建通知的代碼如下所示:

new Notification(from, msg, time);

我想知道我如何從通知類中訪問主JFrame 基本上,我想從我的通知類中更改主JFrame上某些組件的setVisible。

編輯

我的client.java(主JFrame )調用通知

public JPanel pnlMidMenuButtons;
/**** code... **/
Notification ntf = new Notification(from, msg, time); // Further down the notification is being called

ImportUI:

公共類ImportUI擴展客戶端實現NotificationParent {

public void setImportantFieldsVisible(boolean visible) {
    pnlMidMenuButtons.setVisible(visible);
}

}

NotificationParent:

public interface NotificationParent {
    public void setImportantFieldsVisible(boolean visible);
    public void setAgentName(String agentName);
}

而我的通知類:

public class Notification extends JFrame {

    private NotificationParent parent;
    /*...*/

    public Notification(NotificationParent parent, String from, String msg, Date time) {
        this.parent = parent;
        parent.setImportantFieldsVisible(false); // Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    }

}

有什么想法導致異常嗎?

實際的答案將取決於您的需求,但是我會創建一個interface (如果您想為某些對象提供某些功能,而不是為其他對象提供某些功能,則可以創建一系列接口)。

public interface NotificationParent {
    public void setImportantFieldsVisible(boolean visible);
}

然后,我將在調用方上實現此接口...

public class ImportUI extends ... implements NotificationParent {
    /*...*/
    public void setImportantFieldsVisible(boolean visible) {
        //....
    }
}

然后,我將從Notification的附加參數開始,以便它可以接受NotificationParent的引用。

public class Notification extends ... {

    private NotificationParent parent;
    /*...*/

    public Notification(NotificationParent parent, String from, String msg, Date time) {
        this.parent = parent;
        /*...*/
    }

}

然后,只要您需要,我們就可以調用一種可用的方法來滿足您的要求。

顯然,現在您可以有更多的方法,但這取決於您的要求...

暫無
暫無

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

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