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
}
}