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