1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Especie de ComboBox em Java

Discussão em 'Programação' iniciada por eddie_gordo, 27 de Novembro de 2006. (Respostas: 8; Visualizações: 3542)

  1. eddie_gordo

    eddie_gordo Power Member

    Boas,

    Estou a realizar um trabalho em Java que consiste em fazer um jogo de Sueca...

    Até agora ja criei jogadores, baralho, ja distribui jogo e cada jogador (classe) tem definido em si uma ArrayList de cartas, sendo essa a sua mão... Cada carta é também uma classe, tenho também uma classe baralho que "extends" ArrayList <Carta>...

    O que pretendo fazer, é mostrar uma espécie de ComboBox em que apareçam todas as cartas que um jogador tem em mão, de maneira poder ser escolhida uma carta e jogada.... Já procurei no JOptionPane mas nao encontro nada que me deixe fazer isto, alguém me ilucida?

    Peço desculpa se nao consegui ser explícito o suficiente, se for preciso mais algum dado avisem! ;)

    Aguardo resposta
    Obrigado desde ja plas ajudas! ;)
     
  2. eddie_gordo

    eddie_gordo Power Member

    Ja tentei implementar a JComboBox mas tmb nao consegui, nao consigo ir buscar o tipo de dados ArrayList para escolher como opções, aliás, nem sequer consegui implementar nenhuma combobox... :P Com mais tempo coloco aqui o codigo, agora tou com um pouco de pressa... de qlq das maneiras obrigado pela dica..

    Mais sugestoes aceitam-se!

    Cumps
     
  3. eddie_gordo

    eddie_gordo Power Member

    Ora bem, o que estou a tentar fazer é o seguinte:

    Código:
    
        public static void comecaJogo(){
            Object[] numCarta;
            Object[][] arrayMao = new Object[10][4];
            JComboBox Mao = new JComboBox(arrayMao);
            for (j=0;j<4; j++) {
                for (k=0; k<10; k++){
                    arrayMao[k][j] = player[j].Cartas.get(k);
                }            
            }
            for (j=0; j<4; j++) {
                if (player[j].getTipo() == Humano) {
                    numCarta = Mao.getSelectedObjects();
                    JOptionPane.showMessageDialog(null, numCarta);
                }
            }
        }
    
    
    O programa compila sem erros, mas depois na execução nao aparece nada e no Netbeans aparece-me o seguinte:

    Alguma dica? Nao estou a perceber o que me falta... :(
     
  4. CrazyBomber

    CrazyBomber Power Member

    Ok, a variável arrayMao não está inicializada quando crias o JComboBox (daí vem o NullPointerException).
    Segundo, não sei se a combo box trabalha com arrays de arrays...
    O que deves querer é um array para cada "mao", certo? Daí, uma combo box para cada jogador...
     
  5. eddie_gordo

    eddie_gordo Power Member

    O arrayMao era suposto ser uma matriz, de 10x4 de maneira a ter em cada linha a mão (as 10 cartas) de cada jogador...

    Tenho entao q criar o JComboBox noutro sitio, ou o NullPointerException é so uma especie de aviso, podendo na mesma trabalhar com ele?
     
  6. CrazyBomber

    CrazyBomber Power Member

    Não o NullPointerException é um ERRO que te diz que estás a tentar aceder a algo que não está lá.

    Tu fazes:
    arrayMao = new Object[10][4];

    Ele dá-te espaço na memória para esse dito array, mas não mete lá nada (ou seja, está "vazio").

    Depois tens de preencher o arrayMao (como fazes nos dois for's a seguir), e só no final podes criar a combo box com os arrays formados.

    Ainda assim, não sei se será boa ideia dispor as maos com um só array de 10x4.
    Pq não fazer 4 arrays de 10? :)
     
  7. eddie_gordo

    eddie_gordo Power Member

    Portanto, o que dizes é fazer isto:

    Código:
    
        public static void comecaJogo(){
            Object[] numCarta;
            Object[][] arrayMao = new Object[10][4];
            [B]//JComboBox Mao = new JComboBox(arrayMao);[/B]
            for (j=0;j<4; j++) {
                for (k=0; k<10; k++){
                    arrayMao[k][j] = player[j].Cartas.get(k);
                }            
            }
            [B]JComboBox Mao = new JComboBox(arrayMao);[/B]
            for (j=0; j<4; j++) {
                if (player[j].getTipo() == Humano) {
                    numCarta = Mao.getSelectedObjects();
                    JOptionPane.showMessageDialog(null, numCarta);
                }
            }
        }
    
    
    E ter 4 arrays de 10... achas mesmo melhor? Tenho que experimentar.. ;)
     
  8. eddie_gordo

    eddie_gordo Power Member

    Ok, agora tenho isto assim:

    Código:
    Object[] numCarta;
            Object[] arrayMao1 = new Object[10];
            Object[] arrayMao2 = new Object[10];
            Object[] arrayMao3 = new Object[10];
            Object[] arrayMao4 = new Object[10];
            
            for (k=0; k<10; k++){
                arrayMao1[k] = player[0].Cartas.get(k);
            }
            for (k=0; k<10; k++){
                arrayMao2[k] = player[1].Cartas.get(k);
            }
            for (k=0; k<10; k++){
                arrayMao3[k] = player[2].Cartas.get(k);
            }
            for (k=0; k<10; k++){
                arrayMao4[k] = player[3].Cartas.get(k);
            }
            
            JComboBox Mao = new JComboBox(arrayMao1);
            for (j=0; j<4; j++) {
                if (player[j].getTipo() == Humano) {
                    numCarta = Mao.getSelectedObjects();
                    JOptionPane.showMessageDialog(null, numCarta);
                }
            }
        }
    
    Nao dá nenhum erro de compilação, nem no final, mas nao me aparece nenhuma ComboBox! No final aparece quatro vezes a mesma carta.. :( O que eu queria era que aparecessem as cartas todas do jogador para escolher uma delas!:'(
     

Partilhar esta Página