Matriz de jbutton, indice i e j de botões trocado quando botões são colocados na jframe

Olá pessoal, estou como um problema para acessar corretamente os botões de um matriz de jbutton. Gostaria de acessá-los como se fossem uma matriz mesmo, porém os índices de linha e coluna estão ficando invertidos embora eu ñ tenha feito propositalmente para que ficassem assim. Não sei se tem algo haver com o painel ou layout. Desde já agradeço a atenção!

Segue o código:

package grafica;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.event.MouseInputListener;

public class TelaSelecao extends JFrame implements ActionListener, MouseInputListener
{
private JPanel painel;
private JLabel titulo;
private JLabel imagemB1;
private JLabel imagemB2;
private JButton[][] tabelaJogador = new JButton[10][10];

private final int  ESP_X = 10;
private final int ESP_Y = 60;
private final int TAM_BOTAO = 30;

// escolha de embarcacao do jogador
private int escolha = -1;
private int totalEscolhido = 0;

//vetor que armazena qtd de quad pra cada tipo de embarcacao
private int[] qtdQuad = new int[4];

//total de embracacoes por jogador
private final int NUM_EMBARCACOES = 4;

private JButton btnJogar;
private JButton btnPortaAv;
private JButton btnNavioEsc;
private JButton btnCaca;
private JButton btnSub;


public TelaSelecao() 
{
	super("Batalha Naval");
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setSize(500,400);
	//setBounds(100, 100, 450, 400);
	painel = new JPanel();
	//painel.setBorder(new EmptyBorder(20, 20, 20, 20));
	setContentPane(painel);
	painel.setLayout(null);
	//painel.setLayout(new GridLayout(10,10));
	setLocationRelativeTo(null);
	setResizable(false);
	
	Scanner s1 = new Scanner(System.in);
	
	// frase para exibição na tela
	titulo = new JLabel("Escolha as posições das embarcações!");
	titulo.setFont(new Font("Courier", Font.BOLD,14));
	titulo.setBounds(10,10,300,80);
	titulo.setForeground(Color.blue);
	painel.add(titulo);
	
	addMouseMotionListener(this); //necessario para detectar evento de movimento de mouse
	addMouseListener(this); //necessário para detectar evento de clique de mouse
	
	// set botao jogar
	btnJogar = new JButton("Jogar");
	btnJogar.setFont(new Font("Courier", Font.BOLD,16));
	btnJogar.setBounds(350,340,100,20);
	btnJogar.setForeground(Color.blue); // seta cor da letra
	painel.add(btnJogar);
	btnJogar.addActionListener(this); 
	
	// set botao btnPortaAv
	
	btnPortaAv = new JButton();
	btnPortaAv.setBounds(350,60,100,30);
	painel.add(btnPortaAv);
	btnPortaAv.addActionListener(this); 
	
	btnNavioEsc = new JButton();
	btnNavioEsc.setBounds(350,100,100,30);
	painel.add(btnNavioEsc);
	btnNavioEsc.addActionListener(this); 
	
	btnCaca = new JButton();
	btnCaca.setBounds(350,140,100,30);
	painel.add(btnCaca);
	btnCaca.addActionListener(this); 
	
	btnSub = new JButton();
	btnSub.setBounds(350,180,100,30);
	painel.add(btnSub);
	btnSub.addActionListener(this); 
	
	// qtd quad pra cada tipo de embarcacao
	qtdQuad[0] = 4;
	qtdQuad[1] = 3;
	qtdQuad[2] = 2;
	qtdQuad[3] = 2;
	
	for (int j = 0; j < 10; j++)
	{
		for (int i = 0; i < 10; i++)
		{
			tabelaJogador[i][j] = new JButton();
			tabelaJogador[i][j].setText("");
			//tabelaJogador[i][j].setSize(10,10);
			//tabelaJogador[i][j].setBackground(Color.BLUE);  // preenche fundo dos botoes com a cor preta
			tabelaJogador[i][j].addActionListener(this);  
			tabelaJogador[i][j].setBounds(TAM_BOTAO*i+ESP_X,TAM_BOTAO*j+ESP_Y,TAM_BOTAO,TAM_BOTAO);
			getContentPane().add(tabelaJogador[i][j]);
			s1.
			
			
		}
	}
}


public void preencherTabela(int escolha,int lin,int col)
{
	if (this.totalEscolhido <= 4)
	{
		System.out.println("enre");
		if (col + qtdQuad[escolha] < 10)
		{
			for (int i = lin; i < qtdQuad[escolha]; i++)
			{
				tabelaJogador[i][lin].setBackground(Color.BLUE);
			}
			
			this.escolha = -1;
			this.totalEscolhido++;
			
		}else
		{
			System.out.println("Posicao invalida");
		}
	}else
	{
		System.out.println("Vc já atingiu o max de embarcacoes");
	}
	
	
}

@Override
public void actionPerformed(ActionEvent e)
{
	if (e.getSource() == btnPortaAv)
	{
		this.escolha = 0;
		btnPortaAv.setBackground(Color.BLUE);
		
	}else
	{
		for (int i = 0; i < 10; i++)
		{
			for (int j = 0; j < 10; j++)
			{
				if (e.getSource() == tabelaJogador[i][j])
				{
					System.out.println("Botao i: "+i+"botao j: "+j);
					//preencherTabela(escolha,i,j);
					
				}
			}
			
		}
		
	}

}


@Override
public void mouseMoved(MouseEvent e)
{
	// TODO Auto-generated method stub
	//int x = (int) e.getX();
	//int y = (int) e.getY();
	   
	//System.out.println("Mouse moved x: "+x+"mouse y: "+y);
}

@Override
public void mouseClicked(MouseEvent e)
{
	// TODO Auto-generated method stub
	//int x = (int) e.getX();
	//int y = (int) e.getY();
	   
	//System.out.println("Mouse clicked x: "+x+"mouse y: "+y);

}


@Override
public void mouseEntered(MouseEvent e)
{
	// TODO Auto-generated method stub
	
}


@Override
public void mouseExited(MouseEvent e)
{
	// TODO Auto-generated method stub
	
}


@Override
public void mousePressed(MouseEvent e)
{
	// TODO Auto-generated method stub
	
}


@Override
public void mouseReleased(MouseEvent e)
{
	// TODO Auto-generated method stub
	
}


@Override
public void mouseDragged(MouseEvent arg0)
{
	// TODO Auto-generated method stub
	
}

}

Galera, já resolvi aqui. Era só trocar essa linha:

tabelaJogador[i][j].setBounds(TAM_BOTAOi+ESP_X,TAM_BOTAOj+ESP_Y,TAM_BOTAO,TAM_BOTAO);

por

tabelaJogador[i][j].setBounds(TAM_BOTAOj+ESP_X,TAM_BOTAOi+ESP_Y,TAM_BOTAO,TAM_BOTAO);