我有 1 个名为frame 的 jframe,jframe 中有 1 个名为 mainpanel 的 jpanel,以及来自另一个名为 ControlPanel 的类的 1 个 jpanel。
jpanel ControlPanel 已添加到 jframe 框架的主面板中。
private void onLoad(){
ControlPanel cpanel = new ControlPanel;
mainpanel.add(cpanel);
}
在 jframe 框架内,我有一个函数:
public void hideComponents(){
//code here
}
由于我已将 cpanel 添加到框架的主面板中,我如何从 cpanel 内调用框架中的函数?
我所做的是在控制面板类中声明框架
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);
}
关于java - 从 jframe 上添加的 jpanel 类调用 jframe 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27606852/