Como guardar imagens num vetor

19 respostas Resolvido
java
P

Olá.
Estou trabalhando num projeto de Jogo da Memória e preciso muito de ajuda para guardar algumas figuras em um vetor e também como acessar este vetor (recuperar as imagens.
Hoje eu resolvi mudando os nomes dos arquivos (imagens), mas quero saber se há alguma outra forma:

as figuras estão organizadas assim: 1.png, 2.png, 3.png, 4.png, 5.png, 6.png, 7.png, 8.png, 9.png, 10.png, 11.png, 12.png, 13.png, 14.png, 15.png, 16.png.

Segue o codigo da parte onde faço o acesso as imagens:

for (int i = 0; i < QtdeBotoes; ++i){
  if (event.getSource() == botao[i]){ //clicou em um dos botoes do jogo
   botao[i].setEnabled(false); //desativa o botão
   System.out.println("Botão " + i + ": " + caminho + NumSorteado[i] + ".png");
   botao[i].setIcon(new ImageIcon(caminho + Integer.toString(NumSorteado[i]) + ".png"));
   Numero_Click++; //aumenta a contagem dos clicks
   if (Numero_Click == 1) Click1 = i;  //checa o primeiro click (botao)
     if (Numero_Click == 2){         //checa o segundo click (botao)
        Click2 = i;
       if (NumSorteado[Click1] != NumSorteado[Click2]){
          pontos-=2;
          botao[Click1].setIcon(new ImageIcon(imgPadrao)); //aqui eu pego a imagem 1
          botao[Click2].setIcon(new ImageIcon(imgPadrao)); //aqui eu pego a imagem 2
          botao[Click1].setEnabled(true);
          botao[Click2].setEnabled(true);                             
          }  else {
            Cont_Acertos++;
            pontos+=10;            }
            Numero_Click = 0;  } } }

19 Respostas

V

Bom dia amigo!

Não entendi muito bem o que você quer saber, as imagens não são literalmente guardadas em um array, somente a referência delas ou seja o caminho (path) que o sistema precisa fazer para encontra-las. Acredito que o seu problema consiste em compilar o projeto e ele parar de funcionar pq não encontra as imagens, isso já aconteceu comigo quanto comecei a programar.

Na verdade é bem simples, vc pode guardar os paths em um array ou lista e para acessa-los é igual:

{

public void exemplo() {
    //utilizando um array
    Image[] images = new Image[2];
    images[0] = new ImageIcon(getClass().getResource("1.png")).getImage();
    images[1] = new ImageIcon(getClass().getResource("2.png")).getImage();
    //acessando
    JButton button = new JButton();
    button.setIcon(new ImageIcon(images[0]));
    //utilizando uma lista
    List<Image> img_list = new ArrayList();
    img_list.add(new ImageIcon(getClass().getResource("1.png")).getImage());
    img_list.add(new ImageIcon(getClass().getResource("2.png")).getImage());
    //acessando
    button.setIcon(new ImageIcon(img_list.get(0)));
}

}

Caso as imagens estejam dentro de um pacote você tbm precisa colocar o mesmo para que o sistema encontre a imagem.
{

getClass().getResource("/br/com/images/1.png");

}

Espero que isso te ajude em algo. :smiley:

P

Hei Villagram,
Obrigado por responder tão prontamente.
Bem. Trata-se de um Jogo de Memória. E eu quero fazer o SORTEIO (aleatório (Random)) .
Só isso. kkk
Do modo como me mostrou funciona sim. Mas pensei em algo mais “!!JAVA!!” no qual eu pudesse aprender também (sou mesmo iniciante).

Bem. Tenho (algumas pastas, que chamo de categorias (de imagens) e ao acessar a pasta quero fazer o sorteio das figuras e usar este resultado para colocar no jogo.

Obrigado.

V

Boa tarde amigo.

Agora entendi o que você precisa, mas um método randômico pode acabar repetindo valores mais de uma vez dentro de um range, é necessário fazer um método para sanar essa incapacidade do random.

Eu detesto ser chato…kkkkkkkk…mas esse “!!JAVA!!” geralmente é feito pelo programador a linguagem tem ficado mais “simples” agora na versão 11 onde ela se parece em muito com a linguagem python.

Posso te ajudar com esse método randômico mas preciso de umas coisas, pq eu imagino um jogo da memória da seguinte forma:

1 - 16 espaços e 8 imagens (pois elas serão duplicadas). Então imagino que você tem 32 espaços, pois você postou 16 nomes de imagens.
2 - O sorteio será feito linearmente apenas escolhendo a imagem que será inserida de 1 a 32.
3 - Deve existir um método de embaralhamento para reiniciar o jogo.

Preciso apenas que confirme ou corrija os três pontos que citei.

P

nusssssss.
Assustei!!!. kkkkk
Bem. O Jogo tem 3 opções de dificuldades (imagens): 08, 16 e 32 figuras.
Existe uma opção para “ENCANTAR”, que são categorias. É um jcombo, no qual escolhe-se a categoria (de imagens) desejada, tipo: “coisas”, “carros”, “bebidas”; cada uma dessas opções é na verdade um diretório que contém até 32 imagens (razão que te trouxe aqui. kkk).
Já tenho algo (classes prontas para fazer as seleções de botoes(08, 16 ou 32) e um jcombo vazio.
O layout está pronto (de muitas outras ajudas do forum.
Resposta: 1 - Até 32 espaços dos quais seriam usadas 16 imagens.
2 - A cada final de jogo/reinicio, ocorre novo sorteio das imagens
3 - O reinicio é automático a cada reinicio de partida.

Obs.: A uma possibilidade de incluir um botão REINICIO no caso de desistência do jogador.

Voce quer ver os fontes? posso te mandar?

P

JMemoria7.rar (486,7 KB)

V

Assim que possível verei.

V

Fiz duas classes para resolver esse problema, porém vc ainda precisa fazer ajustes no projeto, mudei muita coisa para fazer funcionar as classes. Coloquei aqui as classes criadas e o projeto alterado.

{

public final class RandomAdapter {

private final List<Integer> valores;
private final Random random;

public RandomAdapter() {
    valores = new ArrayList();
    random = new Random();
}

/**
 * Este método faz escolha de número de forma aletória dentro de um range
 * sem repeti-los durante o uso da classe, sendo necessário zerados para
 * poder reutilizar a mesma instância da classe
 *
 * @param range Tamanho que o random irá obedecer
 * @return Um inteiro dentro do range sem repeti-los
 */
public int randomNoRepeat(int range) {
    int v = 0;
    boolean exist = false;
    while (!exist) {
        v = random.nextInt(range);
        if (!valores.contains(v)) {
            valores.add(v);
            exist = true;
        }
    }
    return v;
}

/**
 * Limpa lista de valores usados no método randomNoRepeat
 */
public void zerarRandomNoRepeat() {
    valores.clear();
}

}

public final class MemoryGameUtil {

/**
 * Este método seleciona um número de imagens que é a metade do número de
 * botões informados no range e seta de aleatório um par de imagens dentro
 * dos botões informados dentro do array.
 *
 * @param buttons Array de botões que vão conter as imagens
 * @param path Nome da pasta onde estão as imagens
 * @param range Quantidade de botões que serão usados
 */
public void embaralhar(JButton[] buttons, String path, int range) {
    //cria um random adapter para as imagens
    RandomAdapter rda_img = new RandomAdapter();
    //cria um random adapter para os botões
    RandomAdapter rda_bt = new RandomAdapter();
    //pega o caminho da pasta onde as imagens se encontram
    String path_img = System.getProperty("user.dir") + "\\Figuras\\" + path;
    //cria uma referência da pasta das imagens
    File file = new File(path_img);
    //recupera lista de imagens contidas na pasta
    String[] imgs = file.list();
    //faz um loop para escolher as imagens
    for (int a = 0; a < (range / 2); a++) {
        //pega uma imagem de forma aleatória
        String p = path_img + "\\" + imgs[rda_img.randomNoRepeat(range)];
        //cria um icone com a imagem selecionada
        ImageIcon icon = new ImageIcon(p);
        //loop que seta a imagem seleciona em dois botões de forma aleatória
        for (int b = 0; b < 2; b++) {
            buttons[rda_bt.randomNoRepeat(range)].setIcon(icon);
        }
    }
}

}

}

JMemoria7.zip (817,3 KB)

Desejo muito boa sorte com seu projeto. :smiley:

P

NUSSSSSSS!
Ultra Obrigado em todas as línguas possíveis Villagram,
Você ajudou muitooooo mesmo. É claro que as alterações que fez foram enormes (assustadoras), mas vou destrinchar sim. Cara você foi tremendamente gentil e generoso. Deus abençoe você e outros mais deste Forum.
Agora vou lá ver mais os novos desafios kkkk.
Eu voltarei cheio de dúvidas kkkk.

Mas por hora fico cheio de alegrias.

V

Precisando estamos aqui! :metal::sunglasses::metal:

P

kkkk
Fala assim não que eu vou colar em voce. kkkk
Voce ensina Java?

Já estou precisando de você. Tem um erro esquisito

public void embaralhar(JButton[] buttons, String path, int range) {

//cria um random adapter para as imagens

RandomAdapter rda_img = new RandomAdapter();

//cria um random adapter para os botões

RandomAdapter rda_bt = new RandomAdapter();

//pega o caminho da pasta onde as imagens se encontram

String path_img = System.getProperty(user.dir) + “\Figuras\” + path;

//cria uma referência da pasta das imagens

File file = new File(path_img);

//recupera lista de imagens contidas na pasta

String[] imgs = file.list();

//faz um loop para escolher as imagens

for (int a = 0; a < (range / 2); a++) {

//pega uma imagem de forma aleatória

String p = path_img + “\” + imgs[rda_img.randomNoRepeat(range)];

//cria um icone com a imagem selecionada

ImageIcon icon = new ImageIcon§;

//loop que seta a imagem seleciona em dois botões de forma aleatória

for (int b = 0; b < 2; b++) {

buttons[rda_bt.randomNoRepeat(range)].setIcon(icon); // <-- toda vez que mudo o combo

}                                                                                             //     para 24 ou 32 e clico

}                                                                                                //      NovoJogo da erro aqui

}

Mas tudo está certo quando estou depurrando.
kkk vou ver melhor.

Mas me responde a pergunta ai.

V

É que dentro da suas pastas não tem a quantidade necessária de imagens pelo que vi aqui. Algumas estão vazias e outras como na de Pessoas só tem 10 imagens.

P

Pensei nisso e ja ffiz mais imagens e mesmo assim ta dando erro.

P
un:

Exception in thread AWT-EventQueue-0 java.lang.ArrayIndexOutOfBoundsException: 23

at jmemoria7.MemoryGameUtil.embaralhar(MemoryGameUtil.java:46)

at jmemoria7.PainelEsquerdo.NovoJogo(PainelEsquerdo.java:129)

at jmemoria7.PainelEsquerdo.lambda$new$0(PainelEsquerdo.java:98)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6539)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)

at java.awt.Component.processEvent(Component.java:6304)

at java.awt.Container.processEvent(Container.java:2239)

at java.awt.Component.dispatchEventImpl(Component.java:4889)

at java.awt.Container.dispatchEventImpl(Container.java:2297)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)

at java.awt.Container.dispatchEventImpl(Container.java:2283)

at java.awt.Window.dispatchEventImpl(Window.java:2746)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)

at java.awt.EventQueue$4.run(EventQueue.java:733)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Exception in thread AWT-EventQueue-0 java.lang.ArrayIndexOutOfBoundsException: 22

at jmemoria7.MemoryGameUtil.embaralhar(MemoryGameUtil.java:46)

at jmemoria7.PainelEsquerdo.NovoJogo(PainelEsquerdo.java:126)

at jmemoria7.PainelEsquerdo.lambda$new$0(PainelEsquerdo.java:98)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6539)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)

at java.awt.Component.processEvent(Component.java:6304)

at java.awt.Container.processEvent(Container.java:2239)

at java.awt.Component.dispatchEventImpl(Component.java:4889)

at java.awt.Container.dispatchEventImpl(Container.java:2297)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)

at java.awt.Container.dispatchEventImpl(Container.java:2283)

at java.awt.Window.dispatchEventImpl(Window.java:2746)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)

at java.awt.EventQueue$4.run(EventQueue.java:733)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Exception in thread AWT-EventQueue-0 java.lang.ArrayIndexOutOfBoundsException: 22

at jmemoria7.MemoryGameUtil.embaralhar(MemoryGameUtil.java:46)

at jmemoria7.PainelEsquerdo.NovoJogo(PainelEsquerdo.java:126)

at jmemoria7.PainelEsquerdo.lambda$new$0(PainelEsquerdo.java:98)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6539)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)

at java.awt.Component.processEvent(Component.java:6304)

at java.awt.Container.processEvent(Container.java:2239)

at java.awt.Component.dispatchEventImpl(Component.java:4889)

at java.awt.Container.dispatchEventImpl(Container.java:2297)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)

at java.awt.Container.dispatchEventImpl(Container.java:2283)

at java.awt.Window.dispatchEventImpl(Window.java:2746)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)

at java.awt.EventQueue$4.run(EventQueue.java:733)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Exception in thread AWT-EventQueue-0 java.lang.ArrayIndexOutOfBoundsException: 16

at jmemoria7.MemoryGameUtil.embaralhar(MemoryGameUtil.java:46)

at jmemoria7.PainelEsquerdo.NovoJogo(PainelEsquerdo.java:129)

at jmemoria7.PainelEsquerdo.lambda$new$0(PainelEsquerdo.java:98)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6539)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)

at java.awt.Component.processEvent(Component.java:6304)

at java.awt.Container.processEvent(Container.java:2239)

at java.awt.Component.dispatchEventImpl(Component.java:4889)

at java.awt.Container.dispatchEventImpl(Container.java:2297)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)

at java.awt.Container.dispatchEventImpl(Container.java:2283)

at java.awt.Window.dispatchEventImpl(Window.java:2746)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)

at java.awt.EventQueue$4.run(EventQueue.java:733)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Exception in thread AWT-EventQueue-0 java.lang.ArrayIndexOutOfBoundsException: 30

at jmemoria7.MemoryGameUtil.embaralhar(MemoryGameUtil.java:46)

at jmemoria7.PainelEsquerdo.NovoJogo(PainelEsquerdo.java:129)

at jmemoria7.PainelEsquerdo.lambda$new$0(PainelEsquerdo.java:98)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6539)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)

at java.awt.Component.processEvent(Component.java:6304)

at java.awt.Container.processEvent(Container.java:2239)

at java.awt.Component.dispatchEventImpl(Component.java:4889)

at java.awt.Container.dispatchEventImpl(Container.java:2297)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)

at java.awt.Container.dispatchEventImpl(Container.java:2283)

at java.awt.Window.dispatchEventImpl(Window.java:2746)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)

at java.awt.EventQueue$4.run(EventQueue.java:733)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Mesmo com 32 figuras todas dimensionadas e revisadas.
Quando clico 24X e Novo Jogo dá erro na linha 46.

Mas todos os processos me parecem estar corretíssimos.

estou vendo Depois posto algo.

Obrigado por hora. Ajudou pra caramba.

V

eu encontrei o problema aqui, mas vou demorar um pouco para resolver. Na hora de seleciona o painel não está sendo passado a lista de botões correta e por isto o método da erro. Esse erro se refere a quantidade de itens no array está fora do intervalo de 23.

V

Mesmo passando o painel de 24 botões ele está passando uma lista com apenas 16 botões e por isso o erro acontece.

V

Já resolvi…kkkkkkkkkkkkkkkkkkk…é só ajustar esse for dessa maneira que tudo funcionará perfeitamente. :metal::sunglasses::metal:

{

for (Component comp : janelaPrincipal.getCardPanel().getComponents()) {
        pb = (PainelBotoes) comp;
        if (comp instanceof PainelBotoes) {
            switch (janelaPrincipal.getSelectPanel()) {
                case 0:
                    if (pb.isVisible()) {
                        mgu.embaralhar(pb.getButtonsList(), pi.getComboImages().getSelectedItem().toString(), 16);
                        break;
                    }
                case 1:
                    if (pb.isVisible()) {
                        mgu.embaralhar(pb.getButtonsList(), pi.getComboImages().getSelectedItem().toString(), 24);
                        break;
                    }
                case 2:
                    if (pb.isVisible()) {
                        mgu.embaralhar(pb.getButtonsList(), pi.getComboImages().getSelectedItem().toString(), 32);
                        break;
                    }
            }
            pb.repaint();
        }
    }

}

P

vau me ensinar Java?

V
Solucao aceita

Amigo, eu tenho pretensão de lançar um curso gratuito pelo youtube, mas como não disponho de muito tempo por alguns problemas pessoais, o que eu consigo fazer por hora é orientar com algumas dúvidas pelo fórum ou outros canais disponíveis. Caso eu possa te ajudar em algo mais, pode me procurar sem problemas.

P

OK. Muito obrigado mesmo.

Criado 26 de dezembro de 2018
Ultima resposta 28 de dez. de 2018
Respostas 19
Participantes 2