Boa noite.
Eu não estou conseguindo fazer o seguinte:
O programa tem algumas classes e preciso enviar comandos entre as mesmas.
Tenho: JogoDaVelha4.java, pnlbaixo.java, pnlcentro.java, pnllado.java, pnltopo.java, TelaJogo.java.
P.exemplo: Quero, a partir de cada click nos botões que estão em pnlcentro, mudar o texto de um jlabel que está no pnltopo, ou dependendo de alguma ação no pnlcentro, mudar o estado de um botão em pnlbaixo.
Alguém pode me ajudar, por favor?
Segue o codigo:
(JogoDaVelha4)
package jogodavelha4;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
public class JogoDaVelha4 extends JFrame {
TelaJogo telajogo;
public static void main(String[] args) {
TelaJogo telajogo = new TelaJogo();
telajogo.setVisible(true);
}
}
(pnlbaixo)
package jogodavelha4;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JPanel;
public class pnlbaixo extends JPanel {
private static final Font Med_14 = new Font("Arial Narrow", Font.BOLD, 14);
private static final Font Med_24 = new Font("Arial Narrow", Font.BOLD, 24);
private final TelaJogo telajogo;
JButton VerPlacar = new JButton();
JButton NovoJogo = new JButton();
JButton Sair = new JButton();
public pnlbaixo(TelaJogo telajogo) {
this.telajogo = telajogo;
JPanel pnlbtn = new JPanel();
pnlbtn.setPreferredSize(new Dimension(500, 50));
Dimension size = new Dimension(150, 45);
VerPlacar.setPreferredSize(size);
NovoJogo.setPreferredSize(size);
Sair.setPreferredSize(size);
VerPlacar.setFont(Med_24);
NovoJogo.setFont(Med_24);
Sair.setFont(Med_24);
VerPlacar.setText("Ver Placares");
NovoJogo.setText("Novo Jogo");
Sair.setText("Sair");
pnlbtn.add(VerPlacar);
pnlbtn.add(NovoJogo);
pnlbtn.add(Sair);
VerPlacar.setEnabled(false);
NovoJogo.setEnabled(false);
Sair.setEnabled(true);
VerPlacar.addActionListener(event -> VerPlacar());
NovoJogo.addActionListener(event -> NovoJogo());
Sair.addActionListener(event -> Sair());
add(pnlbtn);
}
private void VerPlacar() {
}
private void NovoJogo() {
for (int n = 0;n < 9; n++) {
//pnlcentro.bt[n].setText("");
//pnlcentro.bt[n].setEnabled(true);
}
NovoJogo.setEnabled(false);
}
private void Sair() {
System.exit(0);
}
}
(pnlcentro)
package jogodavelha4;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
public class pnlcentro extends JPanel {
private final TelaJogo telajogo;
private final JPanel jpfundo = new JPanel();
private static final Font Gra_72 = new Font("Action Jackson", Font.BOLD, 72);
int nBotoes = 9;//qtde de botoes para o jogo
private JButton[] bt = new JButton[nBotoes];//matriz de botoes para o jogo
private String mensagem = "";//aviso (no topo) para indicar a vez
int Jogadas[][] = new int [3][3];//guarda a posição das jogadas
int QtdeJogadas;
String sinal = "X"; //sinal do jogador atual
String ganhador; //guarda o jogador que venceu
String jogador1; //guarda o jogador 1
String jogador2; //guarda o jogador 2
//===============================
public pnlcentro(TelaJogo telajogo) {
this.telajogo = telajogo;
Dimension size = new Dimension(450, 320);
jpfundo.setPreferredSize(new Dimension(size));
jpfundo.setBackground(java.awt.Color.black);
jpfundo.setLayout(new GridLayout(3,3));
add(jpfundo);
//--------------
CriaBotoes();
TestaJogadas();
}
//===============================
public void CriaBotoes() {
for (int i = 0; i < nBotoes; i++) {
bt[i] = new JButton();
bt[i].setFont(Gra_72);
jpfundo.add(bt[i]);
}
}
//===============================
public void TestaJogadas() {
bt[0].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {EscreveSinal(0); VerificaSeGanhou(sinal, 0); TrocarSinal(0);}});
//--------------
bt[1].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { EscreveSinal(1); VerificaSeGanhou(sinal, 1); TrocarSinal(1);}});
//--------------
bt[2].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { EscreveSinal(2); VerificaSeGanhou(sinal, 2); TrocarSinal(2);}});
//================================================
bt[3].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { EscreveSinal(3); VerificaSeGanhou(sinal, 3); TrocarSinal(3);}});
//--------------
bt[4].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { EscreveSinal(4); VerificaSeGanhou(sinal, 4); TrocarSinal(4);}});
//--------------
bt[5].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { EscreveSinal(5); VerificaSeGanhou(sinal, 5); TrocarSinal(5);}});
//================================================
bt[6].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { EscreveSinal(6); VerificaSeGanhou(sinal, 6); TrocarSinal(6);}});
//--------------
bt[7].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { EscreveSinal(7); VerificaSeGanhou(sinal, 7); TrocarSinal(7);}});
//--------------
bt[8].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { EscreveSinal(8); VerificaSeGanhou(sinal, 8); TrocarSinal(8);}});
}
//===============================
private void EscreveSinal(int botao) {
bt[botao].setText(sinal);
bt[botao].setEnabled(false);
//
QtdeJogadas++; //guarda a qtde de jogadas
}
//===============================
private void TrocarSinal(int botao) { //Controle das jogadas
if (sinal == "X") {
//pnltopo. lbl3.setText("Vez do Jogador 2"); <---- este é o meu problema
sinal = "O";
} else {
sinal = "X";
//pnlt.lbl3.setText("Vez do Jogador 1"); <----
}
}
//===============================
private void Ganhou(String sinal) {
DesligaBotoes();
//pnltopo.lbl2.setText("O Ganhador foi: ");
//pnltopo.lbl3.setText(sinal);
}
//===============================
private void VerificaSeGanhou(String sinal, int botao) {
//HORIZONTAIS(3) //----------------
if ((bt[0].getText().equals(sinal)) &&
(bt[1].getText().equals(sinal)) &&
(bt[2].getText().equals(sinal))) {
bt[0].setForeground(Color.green);
bt[1].setForeground(Color.green);
bt[2].setForeground(Color.green);
Ganhou(sinal);
}
//----------------
if ((bt[3].getText().equals(sinal)) &&
(bt[4].getText().equals(sinal)) &&
(bt[5].getText().equals(sinal))) {
bt[3].setForeground(Color.green);
bt[4].setForeground(Color.green);
bt[5].setForeground(Color.green);
Ganhou(sinal);
}
//----------------
if ((bt[6].getText().equals(sinal)) &&
(bt[7].getText().equals(sinal)) &&
(bt[8].getText().equals(sinal))) {
bt[6].setForeground(Color.green);
bt[7].setForeground(Color.green);
bt[8].setForeground(Color.green);
Ganhou(sinal);
}
//VERTICAIS(3) //----------------
if ((bt[0].getText().equals(sinal)) &&
(bt[3].getText().equals(sinal)) &&
(bt[6].getText().equals(sinal))) {
bt[0].setForeground(Color.green);
bt[3].setForeground(Color.green);
bt[6].setForeground(Color.green);
Ganhou(sinal);
}
//----------------
if ((bt[1].getText().equals(sinal)) &&
(bt[4].getText().equals(sinal)) &&
(bt[7].getText().equals(sinal))) {
bt[1].setForeground(Color.green);
bt[4].setForeground(Color.green);
bt[7].setForeground(Color.green);
Ganhou(sinal);
}
//----------------
if ((bt[2].getText().equals(sinal)) &&
(bt[5].getText().equals(sinal)) &&
(bt[8].getText().equals(sinal))) {
bt[2].setForeground(Color.green);
bt[5].setForeground(Color.green);
bt[8].setForeground(Color.green);
Ganhou(sinal);
}
//DIAGONAIS(2) //----------------
if ((bt[0].getText().equals(sinal)) &&
(bt[4].getText().equals(sinal)) &&
(bt[8].getText().equals(sinal))) {
bt[0].setForeground(Color.green);
bt[4].setForeground(Color.green);
bt[8].setForeground(Color.green);
Ganhou(sinal);
}
//----------------
if ((bt[2].getText().equals(sinal)) &&
(bt[4].getText().equals(sinal)) &&
(bt[6].getText().equals(sinal))) {
bt[2].setForeground(Color.green);
bt[4].setForeground(Color.green);
bt[6].setForeground(Color.green);
Ganhou(sinal);
}
//VELHA() //----------------
if (QtdeJogadas >= nBotoes) {
if ((bt[0].getText() != " ") &&
(bt[1].getText() != " ") &&
(bt[2].getText() != " ") &&
(bt[3].getText() != " ") &&
(bt[4].getText() != " ") &&
(bt[5].getText() != " ") &&
(bt[6].getText() != " ") &&
(bt[7].getText() != " ") &&
(bt[8].getText() != " ")) {
for (int i = 0; i < nBotoes; i++) {
bt[i].setForeground(Color.red);
}
DeuVelha();
} } }
//===============================
private void DeuVelha() {
DesligaBotoes();
//pnltopo.//pnlt.lbl3.setText("---- Deu Velha ----"); <----
//baixo.NovoJogo.setEnabled(true);
}
//===============================
private void DesligaBotoes() {
for (int n = 0;n < nBotoes; n++) {
bt[n].setEnabled(false);
} }
}
(pnllado)
package jogodavelha4;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class pnllado extends JPanel {
private final TelaJogo telajogo;
private static final Font Media_24 = new Font("Arial Narrow", Font.BOLD, 22);
private static final Font Grande_42 = new Font("Action Jackson", Font.BOLD, 60);
private final JPanel jpfundo = new JPanel();
private final JPanel jpjogador1 = new JPanel();
private final JPanel jpjogador2 = new JPanel();
private final JPanel jpganhador = new JPanel();
private JLabel lbl11 = new JLabel("JOGADOR 01");
private JLabel lbl12 = new JLabel("x");
private JLabel lbl21 = new JLabel("JOGADOR 02");
private JLabel lbl22 = new JLabel("O");
private JLabel lbl31 = new JLabel("VENCEDOR");
private JLabel lbl32 = new JLabel("X");
public pnllado(TelaJogo telajogo) {
this.telajogo = telajogo;
jpfundo.setPreferredSize(new Dimension(150,500));
jpfundo.setBackground(java.awt.Color.red);
Dimension size = new Dimension(150, 100);
jpjogador1.setPreferredSize(new Dimension(size));
jpjogador2.setPreferredSize(new Dimension(size));
jpganhador.setPreferredSize(new Dimension(size));
jpjogador1.setBackground(java.awt.Color.ORANGE);
jpjogador2.setBackground(java.awt.Color.YELLOW);
jpganhador.setBackground(java.awt.Color.PINK);
jpjogador1.setEnabled(false);
jpjogador2.setEnabled(false);
jpganhador.setEnabled(false);
Dimension tam1 = new Dimension(130, 20);
lbl11.setPreferredSize(tam1);
lbl21.setPreferredSize(tam1);
lbl31.setPreferredSize(tam1);
Dimension tam2 = new Dimension(130, 80);
lbl12.setPreferredSize(tam2);
lbl22.setPreferredSize(tam2);
lbl32.setPreferredSize(tam2);
lbl11.setHorizontalAlignment(javax.swing.JTextField.CENTER);
lbl21.setHorizontalAlignment(javax.swing.JTextField.CENTER);
lbl31.setHorizontalAlignment(javax.swing.JTextField.CENTER);
lbl12.setHorizontalAlignment(javax.swing.JTextField.CENTER);
lbl22.setHorizontalAlignment(javax.swing.JTextField.CENTER);
lbl32.setHorizontalAlignment(javax.swing.JTextField.CENTER);
lbl11.setFont(Media_24);
lbl21.setFont(Media_24);
lbl31.setFont(Media_24);
lbl12.setFont(Grande_42);
lbl22.setFont(Grande_42);
lbl32.setFont(Grande_42);
jpjogador1.add(lbl11);
jpjogador1.add(lbl12);
jpjogador2.add(lbl21);
jpjogador2.add(lbl22);
jpganhador.add(lbl31);
jpganhador.add(lbl32);
jpfundo.add(jpjogador1);
jpfundo.add(jpjogador2);
jpfundo.add(jpganhador);
add(jpfundo);
}
}
(pnltopo)
package jogodavelha4;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class pnltopo extends JPanel {
private final TelaJogo telajogo;
private static final Font Media_24 = new Font("Arial Narrow", Font.BOLD, 24);
private static final Font Grande_42 = new Font("Action Jackson", Font.BOLD, 42);
public JLabel lbl1 = new JLabel();
public JLabel lbl2 = new JLabel();
public JLabel lbl3 = new JLabel();
public pnltopo(TelaJogo telajogo) {
this.telajogo = telajogo;
Dimension tam0 = new Dimension(500, 50);
JPanel pnllbl = new JPanel();
pnllbl.setPreferredSize(tam0);
Dimension tam1 = new Dimension(250, 30);
lbl1.setPreferredSize(tam1);
lbl1.setFont(Media_24);
lbl1.setHorizontalAlignment(javax.swing.JTextField.LEFT);
lbl1.setText("JOGO DA VELHA");
Dimension tam2 = new Dimension(150, 30);
lbl2.setPreferredSize(tam2);
lbl2.setFont(Media_24);
lbl2.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
lbl2.setText("JOGADOR - ");
Dimension tam3 = new Dimension(50, 50);
lbl3.setPreferredSize(tam3);
lbl3.setFont(Grande_42);
lbl3.setForeground(Color.GREEN);
lbl3.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
lbl3.setText("X");
pnllbl.add(lbl1);
pnllbl.add(lbl2);
pnllbl.add(lbl3);
add(pnllbl);
}
}
(TelaJogo)
package jogodavelha4;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TelaJogo extends JFrame {
public TelaJogo() {
Dimension size = new Dimension(600, 500);
setTitle("JOGO DA VELHA");
setSize(size);
setMinimumSize(size);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel container = new JPanel();
container.setBackground(Color.BLUE);
container.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
container.setLayout(new BorderLayout(5, 5));
container.add(new pnltopo(this), BorderLayout.NORTH);
container.add(new pnlbaixo(this), BorderLayout.SOUTH);
container.add(new pnllado(this), BorderLayout.EAST);
container.add(new pnlcentro(this), BorderLayout.CENTER);
setContentPane(container);
JPanel jpTabuleiro = new JPanel();
jpTabuleiro.setBackground(Color.cyan);
jpTabuleiro.setLayout(new GridLayout(3,3));
}
}
Obrigado a todos.