Ir ao conteúdo
  • Cadastre-se

Java Não sei como atuar nos controles.


Ir à solução Resolvido por Manolo8787,

Posts recomendados

Olá Bom dia.

Bem, sou totalmente novato no mundo Java, mas me deparei com umas questões sobre Gerenciadores de Layout.

Sendo bem específico, sobre BORDERLAYOUT.

Vou anexar um desenho da tela na qual estou trabalhando e esperar que alguém possa encarecidamente me ajudar.

O JFrame principal (TelaPrincipal) tem um container em BorderLayout e sobre as áreas estão JPanel com seus respectivos

nomes e objetos de atuação.

Ao clicar no botão (Novo Pedido), os JPanels (vermelho recebe a cor amarela e o verde recebe a cor branca).

Ao clicar no botão de número 01, o JLabel (onde se lê FECHADO, passará a mostrar ABERTO).

Acredito que qualquer explicação/ajuda que puderem me passar seja suficiente para eu pode avançar.

 

Agradeço de coração toda e qualquer ajuda prestada.

image.png.258d3041c73caeffcb64358e570ad0bd.png

 

image.png

Link para o comentário
Compartilhar em outros sites

eu uso o NetBeans 8.2

 

Bem. Na verdade é como chegar ao controle. O comando eu sei qual é.

mas não estou conseguindo fazer com que atue.

 

voce chegou a ver o codigo que postei?

Já até fiz mudanças e agora já posso ver os controles, mas ainda não consigo atuar neles.

 

Por exemplo: Estou acionando um botão que está no jpnlCentro e quero atuar no Jlabel que está no outro jpnlTopo. E nada ocorre.

 

No pnlCentro:

 

public class pnlCentro extends JPanel {
    pnlTopo topo = new pnlTopo();
    pnlBaixo baixo = new pnlBaixo();
    pnlLado lado = new pnlLado();
    ...

 

public void TrocarSinal(int botao) {    //Controle das jogadas
        if (sinal == "X") {
            this.topo.lbl2.setText("Vez do Jogador 2");
            sinal = "O";
        } else {
            topo.lbl2.setText("Vez do Jogador 1");
            sinal = "X";
        }
        this.topo.lbl3.setText(sinal);  <-- quero esta alteração de "X" para "O".
    }    

 

 

Link para o comentário
Compartilhar em outros sites

Então eu não pude observar o seu código no começo, apenas vi os desenhos

 

Esse programa que você esta desenvolvendo é um jogo da velha?

 

public void TrocarSinal(int botao) {    //Controle das jogadas
        if (sinal == "X") {
            this.topo.lbl2.setText("Vez do Jogador 2");
            sinal = "O";
        } else {
            topo.lbl2.setText("Vez do Jogador 1");
            sinal = "X";
        }
        this.topo.lbl3.setText(sinal);  <-- quero esta alteração de "X" para "O".
    } 

 

Link para o comentário
Compartilhar em outros sites

kkkk Cara parece brincadeira. Mas ta assim e ainda não funciona.

Posso postar o código, voce dá uma olhada pra mim?

 

adicionado 10 minutos depois

Se alguem puder me ajudar, segue o codigo completo:

 

JogoDaVelha4.java

================

package jogodavelha4;

import javax.swing.JFrame;

public class JogoDaVelha4 extends JFrame {
    public static void main(String[] args) {
        TelaAbre abertura = new TelaAbre();
        abertura.setVisible(true);
    }
    //==================================================
}

pnlBaixo.java

============

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);
    
    JPanel pnlbtn = new JPanel();
    JButton VerPlacar = new JButton("Ver Placares");
    JButton NovoJogo = new JButton("Novo Jogo");
    JButton Sair = new JButton("Sair");
    //==================================================
    public pnlBaixo() {
        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);
        
        pnlbtn.add(VerPlacar);
        pnlbtn.add(NovoJogo);
        pnlbtn.add(Sair);
        
        VerPlacar.addActionListener(event -> VerPlacar());
        NovoJogo.addActionListener(event -> NovoJogo());
        Sair.addActionListener(event -> Sair());
        
        add(pnlbtn);
    }
    //==================================================
    public void NovoJogo() {
        //centro.LigaBotoes();
    }
    //==================================================
    public void Sair() {
        System.exit(0);
    }
    //==================================================
    public void VerPlacar() {
        
    }
    //==================================================
}


 

pnlCentro.java

============

package jogodavelha4;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JPanel;

public final class pnlCentro extends JPanel {
    pnlTopo topo = new pnlTopo();
    pnlBaixo baixo = new pnlBaixo();
    pnlLado lado = new pnlLado();
    
    private final JPanel jpfundo = new JPanel();
    private static final Font Gra_72 = new Font("Action Jackson", Font.BOLD, 72);
    int nBotoes = 9;//qtde de botões para o jogo
    public JButton[] bt = new JButton[nBotoes];//matriz de botões para o jogo
    public 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
    String lblEtiqueta;
    //==================================================
    public pnlCentro() {
        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 TrocarSinal(int botao) {    //Controle das jogadas
        if (sinal == "X") {
            topo.lbl2.setText("Vez do Jogador 2");
            sinal = "O";
        } else {
            topo.lbl2.setText("Vez do Jogador 1");
            sinal = "X";
        }
        topo.lbl3.setText("MM");
    }    
    //==================================================
    public void PegaEtiqueta(String lbl) {
        
    }
    //==================================================
    public void EscreveSinal(int botao) {
        bt[botao].setText(sinal);
        bt[botao].setEnabled(false);
        QtdeJogadas++;  //guarda a qtde de jogadas
    }
    //==================================================
    public void Ganhou(String sinal) {
        DesligaBotoes();
        topo.lbl2.setText("O Ganhador foi: ");
        topo.lbl3.setText(sinal);
    }
    //==================================================
    public void CriaBotoes() {
        for (int i = 0; i < nBotoes; i++) {
            bt[i] = new JButton();
            bt[i].setFont(Gra_72);
            jpfundo.add(bt[i]);
        }
    }
    //==================================================
    private void DeuVelha() {
        DesligaBotoes();
        topo.lbl2.setText("---- Deu Velha ----");
        baixo.NovoJogo.setEnabled(true);
    }
    //==================================================
    public void DesligaBotoes() {
        for (int n = 0;n < nBotoes; n++) {
            bt[n].setEnabled(false);
        }
        baixo.NovoJogo.setEnabled(true);
    }
    //==================================================
    public void LigaBotoes() {
        for (int n = 0;n < nBotoes; n++) {
            bt[n].setEnabled(true);
            bt[n].setText("");
        }
        baixo.NovoJogo.setEnabled(false);
    }
    //==================================================
    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();
    } } }
    //==================================================
    public void TestaJogadas() {
        bt[0].addActionListener((ActionEvent e) -> {
            EscreveSinal(0); VerificaSeGanhou(sinal, 0); TrocarSinal(0);
        });        
        //--------------
        bt[1].addActionListener((ActionEvent e) -> {
            EscreveSinal(1); VerificaSeGanhou(sinal, 1); TrocarSinal(1);
        });
        //--------------
        bt[2].addActionListener((ActionEvent e) -> {
            EscreveSinal(2); VerificaSeGanhou(sinal, 2); TrocarSinal(2);
        });
        //================================================
        bt[3].addActionListener((ActionEvent e) -> {
            EscreveSinal(3); VerificaSeGanhou(sinal, 3); TrocarSinal(3);
        });
        //--------------
        bt[4].addActionListener((ActionEvent e) -> {
            EscreveSinal(4); VerificaSeGanhou(sinal, 4); TrocarSinal(4);
        });
        //--------------
        bt[5].addActionListener((ActionEvent e) -> {
            EscreveSinal(5); VerificaSeGanhou(sinal, 5); TrocarSinal(5);
        });
        //================================================
        bt[6].addActionListener((ActionEvent e) -> {
            EscreveSinal(6); VerificaSeGanhou(sinal, 6); TrocarSinal(6);
        });
        //--------------
        bt[7].addActionListener((ActionEvent e) -> {
            EscreveSinal(7); VerificaSeGanhou(sinal, 7); TrocarSinal(7);
        });
        //--------------
        bt[8].addActionListener((ActionEvent e) -> {
            EscreveSinal(8); VerificaSeGanhou(sinal, 8); TrocarSinal(8);
        });
    }
    //==================================================
}


pnlTopo.java

==========

package jogodavelha4;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;

public 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);
    
    public JLabel lbl1 = new JLabel("JOGO DA VELHA");
    public JLabel lbl2 = new JLabel("JOGADOR -  ");
    public JLabel lbl3 = new JLabel("-");
    //==================================================
    public pnlTopo() {
        Dimension tam0 = new Dimension(500, 50);
        JPanel pnllbl = new JPanel();
        pnllbl.setPreferredSize(tam0);
        pnllbl.setLayout(new GridLayout(1,3));
        
        Dimension tam1 = new Dimension(80, 30);
        lbl1.setPreferredSize(tam1);
        lbl1.setFont(Media_24);
        lbl1.setHorizontalAlignment(javax.swing.JTextField.LEFT);
        
        Dimension tam2 = new Dimension(80, 30);
        lbl2.setPreferredSize(tam2);
        lbl2.setFont(Media_24);
        lbl2.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        
        Dimension tam3 = new Dimension(50, 30);
        lbl3.setPreferredSize(tam3);
        lbl3.setFont(Grande_42);
        lbl3.setForeground(Color.GREEN);
        lbl3.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        
        pnllbl.add(lbl1);
        pnllbl.add(lbl2);
        pnllbl.add(lbl3);
        
        add(pnllbl);
    }
    //==================================================
}

 

TelaAbre.java

===========

package jogodavelha4;

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

public final class TelaAbre extends JFrame {
    private final JPanel jpDeCima = new JPanel();
    private final JPanel jpDeBaixo = new JPanel();
    private final JPanel jpDeMensagem = new JPanel();
    private final Font Media_24 = new Font("Arial Narrow", Font.BOLD, 22);
    private final JProgressBar BarraDeProgresso = new JProgressBar();
    private final JButton btnIniciar = new JButton("Clique aqui para entrar");
    private final JLabel lblImagem = new JLabel(new ImageIcon("src/imagem/jogodavelha.png"));
    int FlagN; //trava dupla abertura da tela do jogo.
    //==================================================
    public TelaAbre() {
        Dimension size = new Dimension(600, 500);
        setSize(size);
        setMinimumSize(size);
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        
        setVisible(true);
        FlagN = 0;
        JPanel container = new JPanel();
        container.setBackground(Color.BLUE);
        container.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        container.setLayout(new BorderLayout());
        
        add(container);
        
        jpDeCima.setPreferredSize(new Dimension(600,300));
        jpDeCima.setBackground(java.awt.Color.black);
        jpDeCima.setLayout(new BorderLayout());
        
        jpDeCima.add(lblImagem, BorderLayout.CENTER);
                
        jpDeBaixo.setPreferredSize(new Dimension(600,200));
        jpDeBaixo.setBackground(java.awt.Color.white);
        jpDeBaixo.setLayout(new BorderLayout());
        
        BarraDeProgresso.setBackground(new Color(0,102,102,52));
        BarraDeProgresso.setStringPainted(true);
        
        btnIniciar.setSize(200,30);
        btnIniciar.setFont(Media_24);
        
        jpDeMensagem.setPreferredSize(new Dimension(600,50));
        jpDeMensagem.setBackground(java.awt.Color.lightGray);
        jpDeMensagem.setLayout(new GridLayout(2,1));
        
        jpDeMensagem.add(btnIniciar);
        jpDeMensagem.add(BarraDeProgresso);
        
        jpDeBaixo.add(jpDeMensagem, BorderLayout.SOUTH);
                
        MontaBarraDeProgresso();
        
        container.add(jpDeCima, BorderLayout.NORTH);
        container.add(jpDeBaixo, BorderLayout.SOUTH);
        
        setContentPane(container);
        
        btnIniciar.addActionListener(event -> CarregarJogo());
    }
    //==================================================
    public void MontaBarraDeProgresso() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    CarregaBarra();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    //==================================================
    public void CarregaBarra() {
        new Thread() {
            @Override
            public void run() {
                for (int n = 0;n <= 100;n++) {
                    try {
                        sleep(100);
                        BarraDeProgresso.setValue(n);
                        if (BarraDeProgresso.getValue() <= 99) {
                            } else {
                                FlagN++;
                                CarregarJogo();
                            }
                    } catch (InterruptedException ex) {
                        
                    }
                }
            }
        }.start();
    }
    //==================================================
    private void CarregarJogo() {
        if (FlagN <= 1) {
            btnIniciar.setEnabled(false);
            BarraDeProgresso.setEnabled(false);
            TelaJogo telajogo = new TelaJogo();
            telajogo.setVisible(true);
            dispose();
            FlagN++;
        }
    }
    //==================================================
}

TelaJogo.java

===========

package jogodavelha4;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TelaJogo extends JFrame {
    //==================================================
    public TelaJogo() {
        pnlCentro centro = new pnlCentro();
        pnlTopo topo = new pnlTopo();
        pnlBaixo baixo = new pnlBaixo();
        pnlLado lado = new pnlLado();
        
        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(topo, BorderLayout.NORTH);
        container.add(baixo, BorderLayout.SOUTH);    //container.add(new pnlBaixo(this), BorderLayout.SOUTH);    
        container.add(lado, BorderLayout.EAST);
        container.add(centro, BorderLayout.CENTER);
    
        setContentPane(container);
    }
    //==================================================
}


 

Obrigado por qualquer ajuda. Desculpa se fiz algo errado.

 

 

 


 

 

 

 

 

adicionado 25 minutos depois

Sim é um joguinho pro meu netinho (9) engenheiro de sistemas e chatissssimo. Nao posso mudar nada na tela porque ele vem hoje a noite falar o que falta fazer. Esta vai ser a terceira etapa e dia da entrega do projeto funcionando. Vovô não é programador. Mas ele não acredita nisso. Kkkk Eu topei fazer e to enrascado com esses problemas ai.

Link para o comentário
Compartilhar em outros sites

Bem me desculpe a demora :D

 

Tudo certo, eu tive um problema parecido uma vez;

Eu tenho um projeto que há algum tempo eu não mexo mais, mas pode te ajudar:

 

Da uma olhada nesse arquivo, é o fonte do meu jogo da velha, a diferença é que o meu é multiplayer com Sockets, mas nele eu também uso threads;

 

nessa classe o método setup() recebe o nome de quem é a vez, e a classe tem métodos para gerenciar;

 

Esse é o link do Projeto no GitHub:

 

https://github.com/guilherme8787/JogoDaVelhaMutiplayer/

 

Da uma olhada vê se te ajuda, eu acho que consegui entender o que você precisa, você precisa controlar de quem é a vez e os pontos certo? me corrija se eu estiver errado; Só quero ajudar no que puder

adicionado 0 minutos depois

 

Link para o comentário
Compartilhar em outros sites

Sim.

Acho que se puder entender o que está errado (por não conseguir atuar no label ou qualquer componente fora do mesmo panel) ja conseguiria "andar". 

Vou ver o seu projeto.

To nervoso porque o mini engenheiro de sistemas é bem chatinho no que quer. kkkk

Já mandou um monte de sons pra inserir no sistema. kkkkk

To frito.

Link para o comentário
Compartilhar em outros sites

não. não sei. kkkk

 

adicionado 2 minutos depois

Nussssss. Seu jogo ta muito bonito. Vou guardar pra estudar quando aprender Java. kkkkk

Nem posso mostrar pro mlk senão ele vai querer kkkk

 

Estou bem no comecinho do Java nunca programei. 

Só arrumei um neto usurpador que eu amo muito.

 

"É tão bom ser explorado pelos netos......."  LC PapaiLu.

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...