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