Especie de ComboBox em Java

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! ;)
 
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
 
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:

Exception in thread "main" java.lang.NullPointerException
at JogoCartas.MesaJogo.comecaJogo(MesaJogo.java:101)
at JogoCartas.Teste.main(Teste.java:35)
Java Result: 1
Alguma dica? Nao estou a perceber o que me falta... :(
 
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...
 
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?
 
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? :)
 
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.. ;)
 
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!:'(
 
Back
Topo