Ola galera.
Tenho um app em java.
Onde tenho Jframes.
Frame1
Frame2
Frame3
Frame4
Frame_Start ( que é a principal)
No frame principal eu criei um botao chamado Baleatorio.
Eu queria que : quando eu clico no botao.
Ele abre os Frames , aleatorio , os 1,2,3 ou 4
, alguma ajuda?
Olá, tenho uma sugestão: Usar a classe java.util.Random e gerar números no intervalo de 1 a 4 e colocar um switch ou if para determinar qual frame será aberto.
Outra opção é colocar os JFrames numa lista e, toda vez que for abrir um JFrame, embaralha a lista e pega o primeiro. Algo mais ou menos assim:
// adicionando os jframesList<JFrame>lista=newArrayList<>();lista.add(newJFrame1());lista.add(newJFrame2());lista.add(newJFrame3());lista.add(newJFrame4());// pegando um JFrame aleatórioCollections.shuffle(lista);JFrameselecionado=lista.get(0);// faz o que quiser com o JFrame selecionadoselecionado.setVisible(true);
Abraço.
matheus.cirillo
Acho que você pode fazer isso com Reflection.
Dê uma pesquisada sobre isso.
Deybson_10
Isso! Obrigado!
Vc sabe como fazer para que todos os frames executem sem repetir?
matheus.cirillo
Remova-o da lista após executa-lo.
Deybson_10
Como?
TerraSkilll1 like
Com remove(). Você pode inclusive usá-lo no lugar do get:
// adicionando os jframesList<JFrame>lista=newArrayList<>();lista.add(newJFrame1());lista.add(newJFrame2());lista.add(newJFrame3());lista.add(newJFrame4());// já que vai usar remove, verifica se há algo na lista antes de tentar removerif(!lista.isEmpty()){// pegando um JFrame aleatórioCollections.shuffle(lista);JFrameselecionado=lista.remove(0);// remove o JFrame e retorna o jframe removido// faz o que quiser com o JFrame selecionadoselecionado.setVisible(true);}else{// lista está vazia, }