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.
Exemplo:
public static int nextInt(int min, int max) {
Random rand = new Random();
int randomNum = rand.nextInt((max - min) + 1) + min;
return randomNum;
}
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 jframes
List<JFrame> lista = new ArrayList<>();
lista.add(new JFrame1());
lista.add(new JFrame2());
lista.add(new JFrame3());
lista.add(new JFrame4());
// pegando um JFrame aleatório
Collections.shuffle(lista);
JFrame selecionado = lista.get(0);
// faz o que quiser com o JFrame selecionado
selecionado.setVisible(true);
Abraço.
1 curtida
Acho que você pode fazer isso com Reflection
.
Dê uma pesquisada sobre isso.
Isso! Obrigado!
Vc sabe como fazer para que todos os frames executem sem repetir?
Remova-o da lista após executa-lo.
Com remove(). Você pode inclusive usá-lo no lugar do get:
// adicionando os jframes
List<JFrame> lista = new ArrayList<>();
lista.add(new JFrame1());
lista.add(new JFrame2());
lista.add(new JFrame3());
lista.add(new JFrame4());
// já que vai usar remove, verifica se há algo na lista antes de tentar remover
if(!lista.isEmpty()){
// pegando um JFrame aleatório
Collections.shuffle(lista);
JFrame selecionado = lista.remove(0); // remove o JFrame e retorna o jframe removido
// faz o que quiser com o JFrame selecionado
selecionado.setVisible(true);
}else{
// lista está vazia,
}
Recomendo você tirar um tempo para estudar coisas como listas.
Abraço.
1 curtida