我有一个JFrame
可以创建基本通知JFrame类实例的主体。
我的从主目录创建通知的代码JFrame
如下所示:
new Notification(from, msg, time);
我想知道我如何从通知类中访问我的main JFrame
。基本上,我想JFrame
从我的通知类中更改主要组件上的setVisible 。
编辑
我的client.java(main 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;
/*...*/
}
}
然后,我们将在需要时调用一种可用的方法来满足您的要求。
显然,现在您可以有更多的方法,但这取决于您的要求...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句