Java 无法从JLabel的子类运行方法

Java 无法从JLabel的子类运行方法,java,swing,jlabel,Java,Swing,Jlabel,我正在尝试使用gameArea.runGame;,在JLabel的子类gameArea中运行游戏;,但我得到的错误是无法解析方法“runGame”。我知道我可以在子类gameArea之外运行所有这些,但是理解为什么我不能这样做会很有帮助。我已经删除了所有不必要的代码 package Components; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.eve

我正在尝试使用gameArea.runGame;,在JLabel的子类gameArea中运行游戏;,但我得到的错误是无法解析方法“runGame”。我知道我可以在子类gameArea之外运行所有这些,但是理解为什么我不能这样做会很有帮助。我已经删除了所有不必要的代码

package Components;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class MainFrame extends JFrame {

    private BottomPanel bottomPanel;
    private JLabel gameArea;

    public MainFrame() {

        super("test window");
        setLayout(new BorderLayout());

        bottomPanel = new BottomPanel();
        gameArea = new GameArea();

        add(gameArea, BorderLayout.CENTER);
        add(bottomPanel, BorderLayout.AFTER_LAST_LINE);


        bottomPanel.startBTN.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                gameArea.runGame(); // THIS IS WHERE I GET THE ERROR
            }
        });
        setSize(800, 800);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);


    }



}

您正在将游戏区域的类型指定为JLabel。JLabel接口没有方法runGame。你需要施放gameArea才能调用该方法

((GameArea) gameArea).runGame()
JLabel没有方法runGame

您的代码应该是:

private GameArea gameArea;
然后您将能够使用gameArea.runGame

但真正的问题是你为什么要这么做


您可以调用setText。。。在标签上单击以更改文本。无需使用自定义方法创建自定义类。

我使用了setText。。。只是为了说明问题。实际的程序有一些更复杂的地方。无论如何,你已经收到了问题的答案。所以别忘了点击复选标记接受答案,这样人们就知道问题已经解决了。
((GameArea) gameArea).runGame()
private JLabel gameArea;
private GameArea gameArea;