2013-04-16 2 views
-1

Я начал с моей шахматной игры и теперь столкнулся с новыми проблемами. Как я пытался объяснить в названии вопроса;Добавление ImageIcon к определенному JPanel в массиве

Я сделал 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 панели = (JPanel) i.getComponent (3); "в нижней части кода. Ошибка идет так: "i не может быть разрешено".

У меня такое ощущение, что я перепутал ситуацию и начал работать с вещами, на которых у меня нет компетенции работать. Я предполагаю, что либо getComponent является неправильным способом доступа к массиву, либо i .getComponent (3) - неправильная переменная, которую следует использовать.

Вся помощь глубоко оценена и не стесняйтесь спрашивать меня, если я забыл что-то добавить здесь. Должен признаться, что я прошу прощения за такие глупые вопросы, но я нахожу это действительно, очень трудно понять java и работать с ним.

+0

При компиляции этого источника я получаю 9 экземпляров 'can not find symbol'. Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

+0

Я бы сказал, что это даст лучший обзор, добавив весь код, поскольку он не так долго. Также B должен был быть я, перепутал что-то во время программирования. Извините, слишком скоро спать. – Xantrax

+0

* «добавление всего кода» * Я не запрашивал «весь код» и не публиковал его. Весь код включал интерфейс 'config'. В будущем, когда я поставлю ссылку, прочитайте ее, а не пытайтесь угадать, что это значит. –

ответ

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

плохо имени b определяется как локальными для этого цикла. В то время как ..

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

Is after the end of loop, за пределами области действия, необходимой для доступа к переменной.

Смежные вопросы