繁体   English   中英

从jpanel类添加到jframe中的jframe中的call函数

[英]call function in the jframe from the jpanel class which was added on jframe

我有一个名为frame的jframe,一个名为mainpanel的jframe中的1个jpanel和另一个名为ControlPanel的类的jpanel。

jpanel ControlPanel已添加到jframe框架的主面板中。

private void onLoad(){
ControlPanel cpanel = new ControlPanel;
mainpanel.add(cpanel);
}

在jframe框架内,我有一个功能:

public void hideComponents(){
//code here
}

由于我已经将cpanel添加到框架的主面板中,如何从cpanel内部调用框架中的函数?

我所做的事情在controlpanel类中声明为框架

private MainFrame frame;

然后创建一个调用框架功能的按钮

frame.hideComponents(); // error occurs pointing here "NullPointerException"

您必须将MainFrame类实例作为参数传递给ControlPanel构造函数,然后从那里调用hideComponents方法。 示例在这里:

public final class ControlPanel extends JPanel {
    // Optional: you can even declare your MainFrame as private field member
    // if you want to keep track of the frame instance. But let's assume
    // you don't need that in your occasion

    public ControlPanel(MainFrame frame) {
          frame.hideComponents();
    }
    //maybe other code 
    ...
}

例:

private void onLoad(){
  ControlPanel cpanel = new ControlPanel(MainFrame.this);
  mainpanel.add(cpanel);
}

您的对象未初始化。

尝试

frame = new MainFrame();

frame.hideComponents();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM