将ImageIcon添加到数组中的特定JPanel

时间:2013-04-16 09:53:06

标签: java swing jpanel grid-layout imageicon

我已经开始玩我的国际象棋游戏了,现在面临着新的问题。就像我试图在问题的标题中解释一样;

我制作了64个正方形,就像通常的棋盘一样。它们通过数组给出数字,现在我希望在3号方块的板上添加一块。

我的代码:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Frame;
import java.awt.GridLayout;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Chess extends JPanel implements config {

/**
 * @param <MyMethods>
 * @param args
 */

public static void main(String[] args) {

    int[] squareArray;

    squareArray = new int[64];

    int i = 0;

    JFrame frame = new JFrame("Chessboard");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLayout(new GridLayout(SQUARE / ROWS, 0, 2, 2));

    for (i = 0; i < SQUARE; i++) {
        squareArray[i] = i;
        JPanel b = new JPanel(new BorderLayout());

        frame.add(b);

        int row = (i / 8) % 2;

        if (row == 0) {
            b.setBackground(i % 2 == 0 ? config.P1Color : config.P2Color);
        } else {
            b.setBackground(i % 2 == 0 ? config.P2Color : config.P1Color);
        }

        frame.setSize(800, 800);
        frame.setVisible(true);
    }

    JLabel piece = new JLabel(new ImageIcon("pawn.png"));
    JPanel panel = (JPanel) i.getComponent(3);
    panel.add(piece);
}

}

错误发生在代码底部的“ JPanel panel =(JPanel)i.getComponent(3); ”处。错误是这样的; “我无法解决”。

我觉得我搞砸了这里的事情并开始处理我没有能力合作的事情。我的猜测是getComponent是访问数组的错误方法,或者 i .getComponent(3)是要使用的错误变量。

非常感谢所有帮助,如果我忘记在这里添加内容,请随时向我询问。我必须承认,我很抱歉提出这些愚蠢的问题,但我发现真的很难理解java并使用它。

1 个答案:

答案 0 :(得分:2)

for (i = 0; i < SQUARE; i++) {
        squareArray[i] = i;
        JPanel b = new JPanel(new BorderLayout());  // ...

命名不佳的b被定义为该循环的本地。虽然..

JPanel panel = (JPanel) b.getComponent(3);

在循环结束后,在访问变量所需的范围之外。