Olá… Precisava de um help…tenho uma JInternalFrame(Não modal), mas tenho que impedir que se abra novamente a mesma janela, mas posso continuar deixando abrir outras janelas, desde que não sejem repetidas… não sei como fazer isso.
Use o método getAllFrames() que lhe retorna um array de InternalFrames, depois itere com esse array fazendo a comparação uma comparação que lhe garanta que não abrirá um frame repetido. Você pode usar o operador instanceof para verificar por exemplo se o objeto que você está tentando abrir é do mesmo tipo (classe) doque os objetos já abertos ou, em outros casos comparar a propriedade title.
Não sou expert em Swing, mais acho que isso resolve seu problema. :roll:
F
Flin
cria um gerenciador de janelas e todas as janelas tem que ser abertas por esse gerenciador.
Se a instancia ja existir vc nao cria outra.
velo
Olha, eu fiz assim:
cada um dos meus internal frames tava numa classe diferente.
daih, eu deixei o construtor PRIVADO!!! Isso mesmo private Classe(){}
Daih, eu criei uma variavel public, estatica e final do Tipo da Classe:
public static final Classe instance = new Classe();
Funciona belezinha, não sei c te atende. Dependendo o caso vc pode tirar esse final, e toda vez q vc precisa “zerar” a tela, cria um metodo clearClasse que reinstancia a tela.
Fica a ideia.
VELO
volnei
velo:
Olha, eu fiz assim:
cada um dos meus internal frames tava numa classe diferente.
daih, eu deixei o construtor PRIVADO!!! Isso mesmo private Classe(){}
Daih, eu criei uma variavel public, estatica e final do Tipo da Classe:
public static final Classe instance = new Classe();
Funciona belezinha, não sei c te atende. Dependendo o caso vc pode tirar esse final, e toda vez q vc precisa “zerar” a tela, cria um metodo clearClasse que reinstancia a tela.
Fica a ideia.
VELO
Acho que você chegou bem próximo de um Singleton se não quis implementar um. Com certeza seria uma forma de controlar as janelas, mais seus internalFrames ficariam um pouco ingessados a essa tela, se você precisa-se reutilizá-los em outro contexto isso poderia atrapalhar um pouco, caso contrário use sem medo.
velo
Bem, se a ideia for impedir q se abra mais de uma vez o mesmo internalFrame, tah feito.
Bem dizer você força as classes a se tornarem estáticas. Isso é bom? é ruim?
Não sei, mas funciona :roll: :roll: :roll:
A
anonimoxz
Não dificultem, crie uma variavel booleana(funcionara tipo semaforo), quando ela estiver bloqueada (0) bloqueie a função que chama o frame, e quando ele estiver liberada(1, issu vc define), o frame abre…
Prontu…
volnei
zopo:
Não dificultem, crie uma variavel booleana(funcionara tipo semaforo), quando ela estiver bloqueada (0) bloqueie a função que chama o frame, e quando ele estiver liberada(1, issu vc define), o frame abre…
Prontu…
Isso realmente é simples, mas, uma variável booleana para cada JInternalFrame, isso funciona para uma aplicação onde você tem definido o número de frames, mais ingessa a aplicação se você for analizar que pra cada novo tipo de frame você tenha que criar uma nova variável boolean. Isso vai depender doque o nosso amigo está precisando.
rsantini
valeu muito obrigado pela ajuda de todos, resolvi checando com getallframes.