繁体   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