Я рисую шахматную доску в Swing. Я создал плитки (jpanel), а затем попытался добавить компоненты на доску (другой jpanel). Каждый раз, когда добавляется плитка, я пытаюсь установить цвет, черный или белый. У Совета есть GridLayout. Совет добавляет к нему 64 плитки, но только одна из плиток получает цвет, а остальные - по умолчанию. Я попытался сменить плитки (jpanel) на кнопки (JButton) (чтобы увидеть, добавлены ли компоненты на доску или нет), и программа добавила 64 кнопки в Совет. Итак, я предполагаю, что в компоновке и добавлении компонентов нет проблем, а что-то делать с обновлением цвета?Цветные элементы JPanel, которые находятся внутри JPanel
Итак, как я могу изменить цвет этих меньших jpanels (плитки), когда я добавляю их в большую Jpanel (Board)?
Программа выглядит следующим образом (не возражаете схему окраски, я на самом деле не хотят шахматную доску):
class Tile extends JPanel{
private final int width = 50;
private final int height = 50;
Color tileColor;
int xPos, yPos;
public Tile(int xPos, int yPos, Color tileColor){
this.xPos = xPos;
this.yPos = yPos;
this.tileColor = tileColor;
}
public Dimension getPreferredSize(){
return new Dimension(width, height);
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(tileColor);
g.fillRect(xPos, yPos, getWidth(), getHeight());
}
}
class Board extends JPanel{
private final int width = 400;
private final int height = 400;
private int numTiles = 8;
private final Color black = Color.BLACK;
private final Color white = Color.WHITE;
private final int hGap = 2;
private final int vGap = 2;
public Board(){
setLayout(new GridLayout(numTiles, numTiles,hGap, vGap));
setBackground(Color.CYAN);
Color tileColor;
int yPos = 0;
for(int i = 0; i < numTiles; i++){
int xPos = 0;
for(int j = 0; j < numTiles; j++){
if(j % 2 == 0)
tileColor = black;
else
tileColor = white;
add(new Tile(xPos, yPos, tileColor));
xPos += 50;
}
yPos += 50;
}
}
public Dimension getPreferredSize(){
return new Dimension(width,height);
}
}