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