Ir ao conteúdo

Posts recomendados

Postado

Boa noite, como vão?

 

Então, estou desenvolvendo uma aplicação, sorteio de dados, nele quando eu clicar no numero eu quero que a imagem do label mude para ficar de acordo com o numero que foi sorteado. No entanto nao estou conseguindo fazer tal comando.

 

Pensei em fazer assim, mas nao funciona

if(numSorteado==1){
   jLabel3.setIcon(new ImageIcon("imagens/dado11.jpg"));
}

A estrutura da minha arvore é a seguinte

📁 classes

    L  Sorteado.java

📁 imagens

   L (tenho as imagens)

📁 interface

   L Executavel.java

 

Como a funcao esta dentro do executavel, tentei voltar umas pastas e entrar na pasta de imagens, mas nao deu certo.

 

Alguém tem alguma ideia de como proceder?

Postado

Bom, vamos lá. Vamos começar pela classe Sorteado, altere o método sorteio:

public int sorteio() {
    Random gerador = new Random();
    int num = gerador.nextInt(6) + 1;

    // setNumSorteiado(numSorteiado);
    setNumSorteiado(num);

    return num;
}

Dessa forma o número sorteado será atribuído e retornado também.

 

Agora vamos para a classe Executavel. Altere o método jComboBoxNumeroActionPerformed:

private void jComboBoxNumeroActionPerformed(java.awt.event.ActionEvent evt) {
    // Se o index for 0 (invalido), entao desativa. Senao ativa.
    btnSortear.setEnabled(jComboBoxNumero.getSelectedIndex() != 0);
}

Dessa forma o botão será desativado automaticamente sempre que o usuário não escolher uma opção válida.

 

Já no método btnSortearActionPerformed, a lógica está um pouco confusa. Mas só para corrigir o problema de forma pontual, deixe ela assim:

private void btnSortearActionPerformed(java.awt.event.ActionEvent evt) {
    // O if e dispensavel, pois se o index for 0 o botao estara desativado
    btnSortear.setEnabled(false);
    int escolha = Integer.parseInt(String.valueOf(jComboBoxNumero.getSelectedItem()));

    Sorteado sorteia = new Sorteado();
    int numSorteado = sorteia.sorteio();

    int tam = Sorteado.sorteios.size();
    if (tam == 0) {
        if (escolha == numSorteado) {
            sorteia.cadastrar(escolha, true);
            DefaultTableModel dtm = (DefaultTableModel) tabelaSorteio.getModel();
            Sorteado.sorteios.add(sorteia);
            dtm.addRow(new Object[]{escolha, numSorteado, "Acertou"});
            if (numSorteado == 1) {
                // Nao use uma String diretamente, geralmente nao funciona
                // E necessario iniciar o caminho com uma '/'
                jLabel3.setIcon(new ImageIcon(getClass().getResource("/imagens/dado11.jpg")));
            }
        } else {
            sorteia.cadastrar(escolha, false);
            DefaultTableModel dtm = (DefaultTableModel) tabelaSorteio.getModel();
            Sorteado.sorteios.add(sorteia);
            dtm.addRow(new Object[]{escolha, numSorteado, "Errou"});
        }
    } else {
        if (escolha == numSorteado) {
            sorteia.cadastrar(escolha, true);
            DefaultTableModel dtm = (DefaultTableModel) tabelaSorteio.getModel();
            Sorteado.sorteios.add(sorteia);
            dtm.addRow(new Object[]{escolha, numSorteado, "Acertou"});
        } else {
            sorteia.cadastrar(escolha, false);
            DefaultTableModel dtm = (DefaultTableModel) tabelaSorteio.getModel();
            Sorteado.sorteios.add(sorteia);
            dtm.addRow(new Object[]{escolha, numSorteado, "Errou"});
        }
    }
}

Isso faz com que a imagem seja reconhecida caso o número sorteado seja 1. Mas como eu disse, é uma solução muito pontual. Seria melhor rever a sua lógica aqui.

adicionado 0 minutos depois

Seria muito bom também você seguir as convenções de código e nomenclatura para as suas classes. Isso ajuda bastante quando se está programando e procurando erros.

  • Obrigado 1
Postado
44 minutos atrás, Patrickwilker0 disse:

Qual o problema em relação ao nome das classes?

De acordo com a convenção, o nome deve ser um sujeito (lembra das aulas de português?).

 

Dê uma olhada nas modificações que eu fiz, acho que assim você vai entender melhor.

src.zip

  • Amei 1
Postado

Interessante a forma que tu divide as pastas. 

 

(Comecei a ver esse modelo MVC esse mês, não imaginei que ele se estendia para todo tipo de linguagem (nao sei porque))

 

obrigado

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!