Não estou conseguindo fazer

3 respostas Resolvido
java
PapaiLu

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.

3 Respostas

PapaiLu

Ninguem para me ajudar?

wldomiciano
Solucao aceita

Fiz um exemplo de como eu faria mais ou menos.

Preste atenção ao que eu fiz na classe TelaJogo. Basicamente coloquei cada JPanel que vc criou como um atributo desta classe e criei método acessores (os tais getters).

Veja também a classe pnltopo onde adicionei o método setJogador().

E, por último, veja a modificação que fiz no seu método TrocarSinal() na classe pnlcentro.

Com as modificações que fiz, o painel superior mostra os simbolo do jogador ativo no momento. Se a jogada atual será do X, ele mostra o X, se é O, ele mostra O.

Teste e veja se dá pra entender, segue o código completo (Obs: organizei seu código de forma a ficar tudo num arquivo só para facilitar o compartilhamento).

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

public class JogoDaVelha4 extends JFrame {
    TelaJogo telajogo;

    public static void main(String[] args) {
        TelaJogo telajogo = new TelaJogo();
        telajogo.setVisible(true);
    }
}


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

    public void habilitarBotoes() {
        this.NovoJogo.setEnabled(true);
        this.VerPlacar.setEnabled(true);
    }
}

class pnlcentro extends JPanel {
    private static final Font Gra_72 = new Font("Action Jackson", Font.BOLD, 72);
    private final TelaJogo telajogo;
    private final JPanel jpfundo = new JPanel();
    int nBotoes = 9;//qtde de botoes para o jogo
    int[][] Jogadas = new int[3][3];//guarda a posição das jogadas
    int QtdeJogadas;
    String sinal = "X";
    String ganhador;
    String jogador1;
    String jogador2;
    private JButton[] bt = new JButton[nBotoes];
    private String mensagem = "";

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

    private void TrocarSinal(int botao) {
        if (sinal == "X") {
            sinal = "O";
        } else {
            sinal = "X";
        }
        this.telajogo.getTopo().setJogador(sinal);

    }

    private void Ganhou(String sinal) {
        DesligaBotoes();
    }

    private void VerificaSeGanhou(String sinal, int botao) {
        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);
        }
        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);
        }
        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);
        }
        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();
    }

    private void DesligaBotoes() {
        for (int n = 0; n < nBotoes; n++) {
            bt[n].setEnabled(false);
        }
    }
}

class pnllado extends JPanel {

    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 TelaJogo telajogo;
    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);
    }
}

class pnltopo extends JPanel {
    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);
    private final TelaJogo telajogo;
    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);
    }

    public void setJogador(String simbolo) {
        this.lbl3.setText(simbolo);
    }
}

class TelaJogo extends JFrame {
    private pnltopo topo;
    private pnlbaixo baixo;
    private pnllado lado;
    private pnlcentro centro;

    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);

        this.baixo = new pnlbaixo(this);
        this.topo = new pnltopo(this);
        this.lado = new pnllado(this);
        this.centro = new pnlcentro(this);

        JPanel container = new JPanel();
        container.setBackground(Color.BLUE);
        container.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        container.setLayout(new BorderLayout(5, 5));
        container.add(this.topo, BorderLayout.NORTH);
        container.add(this.baixo, BorderLayout.SOUTH);
        container.add(this.lado, BorderLayout.EAST);
        container.add(this.centro, BorderLayout.CENTER);

        setContentPane(container);

        JPanel jpTabuleiro = new JPanel();
        jpTabuleiro.setBackground(Color.cyan);
        jpTabuleiro.setLayout(new GridLayout(3, 3));
    }

    public pnltopo getTopo() {
        return this.topo;
    }

    public pnlbaixo getBaixo() {
        return this.baixo;
    }

    public pnllado getLado() {
        return this.lado;
    }

    public pnlcentro getCentro() {
        return this.centro;
    }
}

Tenho algumas considerações importantes a fazer a respeito do seu código e da sua dúvida.

1 - Para maximizar suas changes de ter sua pergunta respondida, tente simplificar ao máximo seu código. Vc postou suas classes todas separadas e isso dificulta pra alguem que deseja testar. Vê como colocando tudo num arquivo só é mais facil? Vc só precisa copiar, colar num único arquivo.

Então vc pode organizar seu código como quiser no seu computador, mas na hora de postar, tente reorganizar, mas claro, apenas se for possível.

2 - Tente seguir as convenções de nomes do Java para facilitar a leitura.

  • Nome das classes: Ao invés de pnltopo, use algo como PnlTopo, ou mais descritivo ainda, PainelSuperior, ou melhor ainda em inglês, TopPanel.

  • Nome dos métodos: Os métodos em Java, por convenção, são nomeados com a primeira letra minuscula. Então, ao invés de EscreverSinal ou TrocarSinal, use escreverSinal ou trocarSinal.

É isso, espero ter ajudado.

PapaiLu

Hei wldomiciano
Bom dia. Antes de tudo, muito obrigado pela resposta ao tópico.
Sim tudo passou a funcionar exatamente como eu (meu netinho) queria.
Fico (ficamos) muito agradecidos (enaltecidos) pela sua presteza.
Olha. Neste instante já “estamos” (somos uma equipe de produção de software) kkk implementando cada uma das suas dicas (regras para boa programação).
e rumo ao próximo desafio.

Verdadeiramente. MUITO OBRIGADO.
Deus te abençoe.

“Há como é bom ser explorado pelos netinhos…” - LcPapaiLu.

Criado 11 de dezembro de 2018
Ultima resposta 15 de dez. de 2018
Respostas 3
Participantes 2