Pegar um JToggleButton e Verificar se faz parte de uma String

Boa tarde pessoal, tenho um exercício de faculdade que consiste num jogo(forca), estou enrolado num estilo que pretendo fazer, basicamente sorteio as palavras, e tenho uns toggleButton para selecionar a letra
e tenho os métodos na classe

package classes;
 
import java.util.Random;
 
public class Palavras {
 
    private String[] palavras = {"cachorro", "baleia", "arara", "chevrolet", "volksvagen", "samsung", "colher", "tablet", "espanha", "senegal"};
    private String palavra;
    private String letra;
    private Random palavraSorteada = new Random();
    
 
    public Palavras() {
        palavra = palavras[palavraSorteada.nextInt(palavras.length)];
    }
 
    public String getPalavra() {
        return palavra;
    }
 
    public void setPalavra(String palavra) {
        this.palavra = palavra;
    }
 
    public String getLetra() {
        return letra;
    }
 
    public void setLetra(String letra) {
        this.letra = letra;
    }
 
    public char[] codificarPalavra() {
        char[] traco = new char[palavra.length()];
        for (int i = 0; i < palavra.length(); i++) {
            traco[i] ='_';
 
        }
        return traco;
 
    }
 
    public String dica() {
        String dica="";
        if (palavra.equals(palavras[0]) || palavra.equals(palavras[1]) || palavra.equals(palavras[2])) { //etc
            dica = "Animal";
        }
        if(palavra.equals(palavras[3]) || palavra.equals(palavras[4]) || palavra.equals(palavras[5])){
            dica = "Marca";
        }
        if(palavra.equals(palavras[6])){
            dica = "cozinha";
        }
        if(palavra.equals(palavras[7])){
            dica = "eletrônico";
        }
        if(palavra.equals(palavras[8]) || palavra.equals(palavras[9])){
            dica = "país";
        }
        
        return dica;
    }
 
    public boolean verifica(char letra) {
        // char[] l = letra.toCharArray();
        for (int i = 0; i < palavra.length(); i++) {
            if (palavra.charAt(i) == letra) {
                //palavra[i] = letra; vc só quer verificar se existe.
                return true;
            }
 
        }
        return false;
    }
}

na parte grafica, deixei todos os ToggleButton como evento actionPerfomed, todos estão com o mesmo “seleciona”;

quando clico em novo jogo, a palavra aparece codificada, e as dicas

na parte gráfica tenho isso:

package tela;

package tela;

import classes.Palavras;
import java.util.Arrays;
import javax.swing.JOptionPane;
import javax.swing.JToggleButton;

/**
 *
 * @author Gabriel
 */
public class Tela extends javax.swing.JFrame {

    private Palavras jogo;
    private int chances = 0;
    private int letraSelecionada=0;
    public Tela() {
        initComponents();

        jogo = new Palavras();
    }  
      private void jBNovoJogoActionPerformed(java.awt.event.ActionEvent evt) {                                           
        jogo.getPalavra();
        jLDica.setText(jogo.dica());
        jLPalavraAdivinhar.setText(Arrays.toString(jogo.codificarPalavra()));
    }               




eu tentei fazer isso 

     private void seleciona(java.awt.event.ActionEvent evt) {                           
        JToggleButton botao;
        if (evt.getSource() instanceof JToggleButton) {
            botao = (JToggleButton) evt.getSource();
            if (botao.isSelected()) {
                if (letraSelecionada == 1) {
                    letraSelecionada++;
                    jLLetrasDigitadas=letraSelecionada;
                } else if (letraSelecionada == 26) {
                    JOptionPane.showMessageDialog(this, "Todas as Letras foram Digitadas");
                    botao.setSelected(false);
                }
            } else {
                letraSelecionada--;

            }
            jBVerificar.setEnabled(letraSelecionada ==1);
        }                                        

mas não consegui, como faço pra quando clicar em toggle button ele verificar com a palavra sorteada.
e também pra quando errar uma letra trocar a imagem que esta no label.

Acho que pode ter ficado confuso, primeira vez que uso, mas qualquer pergunta se não entenderem vou explicando.

1 curtida

vc nao precisa necessariamente de um ToogleButton, pega um Button qualquer e da a opção de setEnabled(false);

1 curtida

depois da pra pintar ele também se estiver errado né?

mas a questão principal é como verifico a condição do botão tipo letra A faz parte da palavra que tenho que adivinhar

Com certeza!!!

    String a = "Abner";
    if(a.contains("A")){
        System.out.println("temmmm");
    } 
    
    if(a.contains("r")){
        System.out.println("tbm tem");
    }

Output:

temmmm
tbm tem
1 curtida

bom mudei o jeito não consegui partir pro botão tentei fazer com digitando uma letra através de um textField

tenho esse meu código inteiro
public class Palavras {

private String[] palavras = {"cachorro", "baleia", "arara", "chevrolet", "volksvagen", "samsung", "colher", "tablet", "espanha", "senegal"};
private String palavra;
private String letra;
private Random palavraSorteada = new Random();
private char[] letrasUsadas;
private int cont;

 public Palavras() {
    palavra = palavras[palavraSorteada.nextInt(palavras.length)];
}

public String getPalavra() {
    return palavra;
}

public void setPalavra(String palavra) {
    this.palavra = palavra;
}

public char[] getLetrasUsadas() {
    return letrasUsadas;
}

public void setLetrasUsadas(char[] letrasUsadas) {
    this.letrasUsadas = letrasUsadas;
}



public String getLetra() {
    return letra;
}

public void setLetra(String letra) {
    this.letra = letra;
}

public char [] codificarPalavra() {
    char [] traco = new char[palavra.length()];
    for (int i = 0; i < palavra.length(); i++) {
        traco[i] = '_';

    }
    return traco;

}

public String dica() {
    String dica = "";
    if (palavra.equals(palavras[0]) || palavra.equals(palavras[1]) || palavra.equals(palavras[2])) { //etc
        dica = "Animal";
    }
    if (palavra.equals(palavras[3]) || palavra.equals(palavras[4]) || palavra.equals(palavras[5])) {
        dica = "Marca";
    }
    if (palavra.equals(palavras[6])) {
        dica = "cozinha";
    }
    if (palavra.equals(palavras[7])) {
        dica = "eletrônico";
    }
    if (palavra.equals(palavras[8]) || palavra.equals(palavras[9])) {
        dica = "país";
    }

    return dica;
}

public boolean verifica(char letra) {
    // char[] l = letra.toCharArray();
    for (int i = 0; i < palavra.length(); i++) {
        if (palavra.charAt(i) == letra) {
            //palavra[i] = letra; vc só quer verificar se existe.
            return true;
        }

    }
    return false;
}

public char [] letrasDigitadas(char letra) {
   int cont=0;
    for (int i = 0; i < letrasUsadas.length; i++) {
        if (letra == letrasUsadas[i]) {
                letrasUsadas[cont++] = letra;
            
            
        }
    }
    return letrasUsadas;

}

public String teste(char[] LetrasDigitadas) {
    String saida = " - ";
    char letras[] = letrasUsadas;
    for (int i = 0; i < LetrasDigitadas.length; i++) {

        saida+=letras[i];
       
    }

    return saida;

}

}

não consigo pegar a letra na parte grafica que vem de um text field e adicionar num vetor de letras usadas e também para verificar se a letra existe na palavra e se tiver trocar a posição…

o botao novo jogo

 private void jBNovoJogoActionPerformed(java.awt.event.ActionEvent evt) {                                           
    jogo.getPalavra();
    jLDica.setText(jogo.dica());
    jLPalavraAdivinhar.setText(Arrays.toString(jogo.codificarPalavra()));

e o botao verificar que to bugando, tentei isso mas to perdido

  private void jBVerificarActionPerformed(java.awt.event.ActionEvent evt) {                                            
           char letra = jTFLetras.getText().charAt(0);
           char[] arraysDeLetras= jogo.getLetrasUsadas();
            for(int i =0;i<arraysDeLetras.length;i++){
               if(arraysDeLetras[i]==letra){
                   JOptionPane.showMessageDialog(this, "letra ja usada");
                   return;
               }
            }
            jogo.teste(letra);   
            
            jLLetrasDigitadas.setText(Arrays.toString(jogo.letrasDigitadas(letra)));
1 curtida