【问题标题】:JFrame and JPanel problems with calling betweenJFrame 和 JPanel 之间的调用问题
【发布时间】:2026-01-18 20:55:02
【问题描述】:
package pozivanjeProzora;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;

public class MainPanel extends JPanel {
SidePanel panel ;
MainWindow instanca;

public MainPanel()
{
    super();

    JButton button = new JButton("Pozdrav iz main panela");
    add(button);

    button.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {

            instanca.add(panel);

        }
    });
}
}

所以,我在 MainWindow 中 extend JFrame 并创建了它的实例。我现在在 MainWindow 中调用的 MainPanel 类中。但是,如果我进入MainPanel 并且如果我单击此按钮,我希望我的 MainWindow(它扩展 JFrame)从 SidePanel 类(它有一个按钮并扩展 JPanel)中添加面板。

但如果我点击按钮,它只会显示NullPointerException。我的污点在哪里? MainWindow 只有几行关于窗口位置和可见的内容,我在运行程序时将 MainPanel 添加为第一个面板。但是,当我从 MainPanel 调用另一个面板并尝试使用 MainWindow 实例添加该面板时,它会显示错误。

【问题讨论】:

    标签: jframe jpanel


    【解决方案1】:

    您的变量instanca 永远不会被初始化。也许在构造函数中传递它。

    public MainPanel(MainWindow mainWindow)
    {
      instanca = mainWindow;
    

    【讨论】: