Java-找不到符号(摆动) [英] Java- Cannot find symbol (swing)

查看:120
本文介绍了Java-找不到符号(摆动)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个西蒙游戏,并且已经调试了一段时间,然后才完成。到目前为止只剩下一个错误;编译器(而不是NetBeans IDE)报告错误;特别是找不到符号MenuPanel;类:BorderPanel。我知道它不在本课程中,但是我不确定如何指向它。下面的相关代码:

I have a Simon game that I'm working on, and I've been debugging for a while before moving on to finish. Just this one error left so far; Compiler (NetBeans IDE rather) reporting error; specifically "Cannot find symbol MenuPanel ; Class: BorderPanel". I know it is not within this class, but I'm not entirely sure how where to point it to. Relevant code below:

package simon;

import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Color.*;


/**
 *  Main Class
 * @author Chris Mailloux
 */
public class Simon
{
    // Variable declarations.
    public static final String[] colors = {"Green", "Red", "Yellow", "Blue"};
    public static ArrayList<String> pattern = new ArrayList<String>();
    public static int currentScore = 0;
    public static int iterator = 0;
    public static boolean isPlayerTurn = false;
    // PLACEHOLDER FOR HIGHSCORE RETRIEVAL FROM FILE
    public static int highScore = 0; // TEMPORARY

    public static void main (String[] args)
    {
        GameWindow window = new GameWindow();
        window.setVisible(true);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

/**
 * Class for main game window.
 * @author Chris
 */
class GameWindow extends JFrame
{
    GameWindow()
    {
        // Set basic properties of frame.
        setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
        setTitle("Simon");
        setResizable(true);
        setLocation(DEFAULT_HORIZONTAL_LOCATION, DEFAULT_VERTICAL_LOCATION);
        // PLACEHOLDER FOR IMAGE ICON

        // Adding Menu Panel
        MenuPanel menuPanel = new MenuPanel();
        add(menuPanel);

        // Adding buttons panel.
        ButtonsPanel buttonsPanel = new ButtonsPanel();
        add(buttonsPanel);

        // Adding Border layout helper panel.
        BorderPanel borderPanel = new BorderPanel();
        add(borderPanel);

        // Setting grid layout (with spaces)
        buttonsPanel.setLayout(new GridLayout(2, 2, 20, 20)); 

        // Setting background color of main panel to black.
        buttonsPanel.setBackground(Color.black);
    }
    // Declaring window positioning constants.
    public static final int DEFAULT_WIDTH = 800;
    public static final int DEFAULT_HEIGHT = 800;

    // TEMPORARY PLACEHOLDER FOR SCREENSIZE CALCULATIONS
    public static final int DEFAULT_HORIZONTAL_LOCATION = 0;
    public static final int DEFAULT_VERTICAL_LOCATION = 0;
}

/**
 * Class to hold the buttonsPanel
 * @author Chris
 */
class ButtonsPanel extends JPanel
{
    public static JButton greenButton = new JButton();
    public static JButton redButton = new JButton();
    public static JButton yellowButton = new JButton();
    public static JButton blueButton = new JButton();

    ButtonsPanel()
    {
       // Setting background color of buttons.
       greenButton.setBackground(Color.GREEN);  // NEED COLOR CONSTANTS
       redButton.setBackground(Color.RED);  
       yellowButton.setBackground(Color.YELLOW);    
       blueButton.setBackground(Color.BLUE);

       // Add buttons to panel. (In order)
        add(greenButton);
            add(redButton);
        add(yellowButton);
            add(blueButton);

       // Creating ActionListeners for 4 main buttons.
        ActionListener greenAction = new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                greenClicked();
            }
        };

        ActionListener redAction = new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                redClicked();
            }
        };

        ActionListener yellowAction = new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                yellowClicked();
            }
        };

        ActionListener blueAction = new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                blueClicked();
            }
        };

            // Associate actions with buttons.
        greenButton.addActionListener(greenAction);
        redButton.addActionListener(redAction);
        yellowButton.addActionListener(yellowAction);
        blueButton.addActionListener(blueAction);
    }

        // Handling button activations.
        public static void greenClicked()
        {
            // TODO
        }

        public static void redClicked()
        {
            // TODO
        }

        public static void yellowClicked()
        {
            // TODO
        }

        public static void blueClicked()
        {
            // TODO
        }
}
/**
 * Menu buttons panel.
 * @author Chris Mailloux
 */
class MenuPanel extends JPanel
{
    public MenuPanel()
    {
        setBackground(Color.BLACK);

        // Menu panel buttons.
        JButton startButton = new JButton("Start");
        JButton scoreDisplay = new JButton(String.valueOf(Simon.currentScore));
        JButton highScoreDisplay = new JButton(String.valueOf(Simon.highScore));
        add(startButton);
        add(scoreDisplay);
        add(highScoreDisplay);
        scoreDisplay.setBackground(Color.BLACK);
        highScoreDisplay.setBackground(Color.BLACK);
        startButton.setBackground(Color.BLUE);
        scoreDisplay.setEnabled(false);
        scoreDisplay.setEnabled(false);
        // ActionListeners for menu buttons.
        ActionListener startButtonAction = new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                Game.startGame();
            }
        };
        startButton.addActionListener(startButtonAction);
    }
 }

/**
 * Border Panel support class.
 * @author Chris Mailloux
 */
class BorderPanel extends JPanel
{
    BorderPanel()
    {
        setLayout(new BorderLayout());
        add(menuPanel, BorderLayout.NORTH);
    }
}
/**
* Main game logic class.
* @author Chris
*/
class Game extends Simon // Extends to allow to inherit variables.
{
// Resets variables for new game.
public static void startGame()
{
    isPlayerTurn = false;
    pattern.clear();
    currentScore = 0;
    iterator = 0;
    gamePlay(); // Starts game
}

public static void gamePlay()
{
    if (isPlayerTurn = false)
    {
        computerTurn();
    }
    else
    {
        playerTurn();
    }
}

public static void computerTurn()
{
    ButtonsPanel.greenButton.setEnabled(false);
    ButtonsPanel.redButton.setEnabled(false);
    ButtonsPanel.yellowButton.setEnabled(false);
    ButtonsPanel.blueButton.setEnabled(false);
    iterator = 0; // So CPU can use iterator to show pattern.
    int randInt = (int) Math.random() * 4;
    String randColor = colors[randInt];
    pattern.add(new String(randColor));
    showPattern();
}

public static void playerTurn()
{
    iterator = 0;
    ButtonsPanel.greenButton.setEnabled(true);
    ButtonsPanel.redButton.setEnabled(true);
    ButtonsPanel.yellowButton.setEnabled(true);
    ButtonsPanel.blueButton.setEnabled(true);
}

/**
 * Handles scoring and checks inputs for correctness.
 * @author Chris Mailloux
 */
public static void check()
{
    if(lastInput == pattern.get(iterator))
    {
        iterator++;
        if(iterator > currentScore)
        {
            currentScore++;
            if(currentScore > highScore)
            {
                highScore++;
                // PLACEHOLDER TO WRITE HIGHSCORE TO FILE.
            }
        }
    }
    else
    {
        gameOver();
    }
}

public static void showPattern()
{
    int j = 0;
    while (j < pattern.size())
    {
        String showerHelper = pattern.get(j); // Helper variable.
        switch (showerHelper)
        {
            case "Green" : ButtonsPanel.greenClicked();
            case "Red" : ButtonsPanel.redClicked();
            case "Yellow" : ButtonsPanel.yellowClicked();
            case "Blue" : ButtonsPanel.blueClicked();
            break; // Fallthrough handler.
            default: System.out.println("Error: Invalid value for pattern"
                    + " ArrayList, or improper storage of variable in the"
                    + " showerHelper variable.");
        }
        j++;
    }
}

    public static void gameOver()
    {
        // TODO
    }
}


推荐答案

在您的课程中 BorderPanel 您使用的变量 menuPanel ...不存在。

In your class BorderPanel you're using a variable menuPanel that ... doesn't exist.

add(menuPanel, BorderLayout.NORTH);

这就是为什么它告诉您这是一个丢失的符号。

That's why it's telling you that it's a missing symbol.

也许您是要创建 MenuPanel 的新实例?

Perhaps you meant to create a new instance of MenuPanel?

add(new MenuPanel(), BorderLayout.NORTH);

这篇关于Java-找不到符号(摆动)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆