Adicionar botões dinamicamente

4 respostas
G

Estou tentando incrementar um quiz e pintou uma duvida. Seguinte no meu quiz o texto da questão já contêm as as alternativas, e o objeto questão tem uma variável tipo que determina o tipo de alternativas da questão (A-E, A-D, V-F (Verdadeiro ou falso)).

Eu queria adicionar botões dinamicamente de acordo com o tipo de alternativa e colocar um atalho neles de acordo com a alternativa com setMnemonic(), de forma que quando o usuário clicar Alt + a Letra da alternativa responda a pergunta.
Exemplo se a questão for do Tipo A-E, quero que sejam criados os botões A, B, C, D, e E.
E quando o usuário clicar Alt+ A por exemplo acione o botão A.

é possível fazer isso?

4 Respostas

T

JQuery ou Javascript. Pode escolher qual dos dois você vai querer estudar para por isso em prática.

G

É um programa desktop Estou usando java Swing, esqueci de mencionar.

T

Sorry… não consigo te ajudar com isso. =/

D

Olá

Vc poderia usar uma lista para controlar os botoes adicionados no JPanel, a qtd de botoes na lista deve ser igual a que está no JPanel.

Se na lista tiver 3 botoes e for uma questão de A-E, então devem ser acrescidas 2 botões na lista e no JPanel, mas se for V-F, nada será acrescida, em nenhum momento deve se retirar da lista ou JPanel.

Enquanto são adicionados, deverá usar o setVisible(false) em todos da lista exceto os N primeiros que devem ser TRUE e aterar o setText e o setMnemonic para a letra desejada.

class PanelBotoes extends JPanel {
    List<JButton> listaDeBotoes;
    public PanelBotoes() {
        super(new FlowLayout());
    }
    void setBotoesPorIntervalo(char a, char n) {
        int qtd = n - a + 1;
        ajustarLista(qtd); // acrescenta os botões se lista.size < qtd, esconde todos e exibe apenas a qtd necessária
        for (int i = 0; i < qtd; i++) {
            char c = (char) (a + i);
            JButton b = listaDeBotoes.get(i);
            b.setText(c)
            b.setMnemonic(alt + c);
        }
    }
}
Criado 2 de julho de 2016
Ultima resposta 3 de jul. de 2016
Respostas 4
Participantes 3