Não repetir IFrames no DesktopPane  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
cidfillippe
Thread.start()
[Avatar]

Membro desde: 04/08/2008 12:47:46
Mensagens: 45
Offline

Galera eu to com uma dúvida...
Eu criei um menu que quando clicado exibe um internal frame... Só que quando clico novamente ele exibe um novo internal frame...
É possível fazer com que ele exiba o internalFrame já aberto?
[Email] [MSN]
Felagund
GUJ Master
[Avatar]

Membro desde: 26/07/2006 11:51:36
Mensagens: 1732
Localização: Santa e Bela Catarina
Offline

vc tem que procurar o JDesktopPane se já existe um internalframe da mesma classe.

se existir vc não cria, se não vc cria.

[]'s

att
Rafael Felix

Rolling With Code
Twitter
[WWW]
filipenf
JavaBaby

Membro desde: 27/05/2009 12:47:07
Mensagens: 98
Offline

usa o pattern singleton ao invés de criar uma instância cada vez.

Você está bêbado quando começa a sentir solidariedade e não consegue pronunciar essa palavra.

Filipe N. Felisbino
SCJP - SCWCD - LPIC 1
fnf01.blogspot.com - twitter.com/filipenf
[WWW] [Yahoo!]
cidfillippe
Thread.start()
[Avatar]

Membro desde: 04/08/2008 12:47:46
Mensagens: 45
Offline

Como posso usar este pattern singleton?
[Email] [MSN]
filipenf
JavaBaby

Membro desde: 27/05/2009 12:47:07
Mensagens: 98
Offline

dá uma pesquisada no google, este pattern é bem conhecido e difundido. coloca 'java singleton pattern' que vc acha.

Você está bêbado quando começa a sentir solidariedade e não consegue pronunciar essa palavra.

Filipe N. Felisbino
SCJP - SCWCD - LPIC 1
fnf01.blogspot.com - twitter.com/filipenf
[WWW] [Yahoo!]
Felagund
GUJ Master
[Avatar]

Membro desde: 26/07/2006 11:51:36
Mensagens: 1732
Localização: Santa e Bela Catarina
Offline

Nesse caso não acho vantagem usar o singleton.

A tela pode ser acessada uma única vez o o sistema ficar aberto o dia todo.
E essa tela nunca será coletada pelo Garbage, consumindo recursos de maneira descessesarias.

Nem todos os padrões devem ser aplicados sempre. E esse eu acredito que o singleton se torne um anti-pattern

att
Rafael Felix

Rolling With Code
Twitter
[WWW]
filipenf
JavaBaby

Membro desde: 27/05/2009 12:47:07
Mensagens: 98
Offline

Até concordaria com você se ele precisasse fazer isso em várias telas, mas pelo que entendi não é isso e ficar com a tela durante todo o tempo que a VM ficar aberta não seria um problema. Além disso, se ele quiser pode fazer algum mecanismo pra eliminar a reference dela ( tipo criar um killInstance ).

Você está bêbado quando começa a sentir solidariedade e não consegue pronunciar essa palavra.

Filipe N. Felisbino
SCJP - SCWCD - LPIC 1
fnf01.blogspot.com - twitter.com/filipenf
[WWW] [Yahoo!]
cidfillippe
Thread.start()
[Avatar]

Membro desde: 04/08/2008 12:47:46
Mensagens: 45
Offline

Galera eu não posso conferir se o objeto é da mesma classe pq tem objetos que é da mesma classe mas são distintos... por exemplo tenho internalframe para add pessoas e outro para add livros... Aí fiz o seguinte...

Criei um método na classe que possui o desktoppane que add um novo internal frame que recebe como parametro o título e o JPane que ele adicionará...

e criei um método que remove o internal frame que possui o título que quero eliminar...

não sei se é uma boa prática mas ficou muito útil, já que os métodos são static posso adicionar e remover por qualquer que seja a classe de uma forma bem simples

Abraço
[Email] [MSN]
filipenf
JavaBaby

Membro desde: 27/05/2009 12:47:07
Mensagens: 98
Offline

Existem 1001 formas de se preparar nestom... heheheh

outra sugestão seria no frame que controla os InternalFrames vc ter um map que associasse um identificador da tela à instância do JFrame. Ou seja:



só que vc teria que criar a classe MyInternalFrame como sendo subclasse de JInternalFrame e criar um método tipo:



Desta forma, sempre que você criar uma tela, pode checar se ela já existe no mapa e, se não existir, criar e adicionar ela ao mapa.

Você está bêbado quando começa a sentir solidariedade e não consegue pronunciar essa palavra.

Filipe N. Felisbino
SCJP - SCWCD - LPIC 1
fnf01.blogspot.com - twitter.com/filipenf
[WWW] [Yahoo!]
brlima
Moderador
[Avatar]

Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline

essa idéia do filipenf é boa. mas não precisa extender. pode usar a propriedade setName() pra setar o nome e coloca ele como key da map. aí é só dar um get nesse map, se retornar nulo, significa que a janela não foi aberta.



e por aí vai...


ps-off: tirando a poeira do usuário...

Bruno R. Lima
-------------------------------------------
flickr :: twitter
[MSN]
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team