Как заставить JButton быть размещенным поверх другого JButton?

#java

#java

Вопрос:

Повторюсь, я пытаюсь добавить фигуры в создаваемую мной игру в шашки, однако, когда я добавляю кнопки на доску, они вместо этого добавляются рядом с квадратами на доске. Ниже приведен мой код:

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

public class Board
{
    public static void main(String[] args)
    {
        JFrame board = new JFrame("Draughts");
        JPanel panel = new JPanel();

        GridLayout grid = new GridLayout(8,8);

        board.setSize(800,800);
        panel.setSize(800,800);
        panel.setLayout(grid);

        final int SIZE = 8;

        board.setTitle("Draughts");
        board.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Square[][] buttons = new Square[SIZE][SIZE];

        for (int a = 0; a < SIZE; a  )
        {
            for (int b = 0; b < SIZE; b  )
            {
                if((a b)%2 != 0)
                {
                    buttons[a][b] = new Square(a, b, true);
                    panel.add(buttons[a][b].getButton());
                    panel.add(buttons[a][b].getPiece());
                }
                else
                {
                    buttons[a][b] = new Square(a, b, false);
                    panel.add(buttons[a][b].getButton());

                }               
            }
        }  

        board.setContentPane(panel);
        board.setVisible(true);  
    }  
}
  

и

 import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;

public class Square
{
    Border borderE = BorderFactory.createEmptyBorder();

    int xPosition;
    int yPosition;

    ImageIcon white = new ImageIcon("empty1.png");
    ImageIcon black = new ImageIcon("empty2.png");
    ImageIcon selectedSquare = new ImageIcon("selected.png");
    ImageIcon redPiece = new ImageIcon("red.png");
    ImageIcon redKing = new ImageIcon("red-king.png");
    ImageIcon whitePiece = new ImageIcon("white.png");
    ImageIcon whiteKing = new ImageIcon("white-king.png");
    JButton btnSquare = new JButton();
    JButton btnPiece = new JButton();
    public boolean isWhite;
    public int pieceHere;

    public Square(int x, int y, boolean isW)
    {
        xPosition = x;
        yPosition = y;
        isWhite = isW;
        int redPieceHere = 1;
        int whitePieceHere = 2;
        int blankSpace = 0;

        btnSquare.setBorder(borderE);
        btnPiece.setBorder(borderE);

        if (isWhite == true)
        {

            btnSquare.setIcon(white);
            //for rows 0,1,2, check black/white, put red if white
            //for rows 5,6,7, check if white, put white piece if white
            for (y = 0; y < 8; y  )
            {

                if (y < 3)
                {
                    pieceHere = redPieceHere;
                    btnPiece.setIcon(redPiece);
                }
                else if(y > 4)
                {
                    pieceHere = whitePieceHere;
                    btnPiece.setIcon(whitePiece);
                }
                else
                {
                    pieceHere = blankSpace;
                }
            }

        }
        else
        {
            btnSquare.setIcon(black);
        }
    }

    public JButton getButton()
    {
        return btnSquare;
    }

    public JButton getPiece()
    {
        return btnPiece;
    }

    public static void main(String[] args)
    {

    }
}
  

Я очень ценю любую помощь, поскольку это загоняет меня в тупик. У меня такое чувство, что это как-то связано с добавлением нового параметра в квадрат, а затем добавлением его в цикл в Board, однако я не совсем уверен, как это сделать, чтобы это работало, и мне нужна помощь.

Большое спасибо, Джек

Комментарии:

1. setLocation(x, y) может быть здесь полезным. Вы пробовали это? docs.oracle.com/javase/1.5.0/docs/api/java/awt /…

2. Где бы вы использовали setLocation?

3. На кнопке..