Ativando e Desativando Bordas JFrame

10 respostas
G

Acho que pode ser duvida de algumas pessoas e como passei um bom tempo pesquisando e não achei como , foi fazendo testes que consegui , vou postar aqui como realizar isso!

JFrame f = new JFrame(); f.setVisible(true); //caso fosse usar "df.setUndecorated(true)" agora , daria erro //para isso f.dispose(); f.setUndecorated(true); f.setVisible(true); //mesma coisa para "f.setUndecorated(false)" f.dispose(); f.setUndecorated(false); f.setVisible(true);

Qualquer duvida postem ai! =D

10 Respostas

R

geovanni ,

Obrigado pela dica , consegui fazer funcionar aqui.
Chamei o metodo setUndecorated(true) antes do metodo setVisible(true) , não precisei usar o dispose e o show.

Vou guardar essa dica , acredito que com isso da até para fazer uma tela de splash personalizada com barra de progresso.

Valeu !!!

G

O problema mesmo é quando a janela já ta visível , da erro.

e se tu usar um setVisible(false) antes , não funciona. D=

Com essa técnica até pode se fazer um botão no JFrame que adiciona e remova as bordas. =D

Não é muito útil no dia-dia na programação Swing , mas pode ser importante em casos específicos. =D

Vlw!

S

Só um detalhe: usando f.setUndecorated(false); retira também a barra de título e não permite redimensionar o jframe.

G

nao tinha reparado nisso. ‘-’

então esse setUndecorated(false) é um grande problema ‘-’

Provavelmente esse jeito que fiz tambm permite redimensionar o jframe =D

vou fazer uns testes aqui depois ^^

V

[size=18][color=red]Não use métodos deprecated.[/color][/size]

Eles não estão assim à toa. É, no mínimo, uma irresponsabilidade confiar num código que o fabricante da linguagem diz explicitamente para você não usar, ao ponto de programar sua IDE para deixá-lo riscado. Em código assim, não há garantias de funcionamento, ou mesmo de que o método existirá em funções futuras da linguagem.

Se você ler os fontes do método setVisible, vai ver que ele também remonta a janela. Na pior das hipóteses, chame o método invalidate() sobre a janela antes de abri-la novamente.

G

Não achei outra opção D=

Eu acho que tentei o setVisible(true) e não funciono!
vou até tentar usar invalidate() pois nunca tentei com ele , mas o show() foi a unica alternativa que achei
se funcionar arrumo o codigo aqui =D

G

Coloquei um setVisible(true) e funcionou =D

Nao sei porque eu achava que nao funcionava .-.'
Achava que ja tinha feito isso e nao tinha funcionado!

Vou arrumar aqui =D //Arrumado!

Obs.:Alguém sabe me responde porque o setVisible(false) não desmonta a janela , apenas esconde , e o setVisible(true) monta se ela não foi desmontada! D=

V

O setVisible(false) não desmonta a janela justamente porque é o que ele faz, deixa-la apenas invisível. Para desmontar, use o dispose().

V

Detalhe. Se você for ver o código do método setVisible(true), vai ver que internamente ele chama o show(), além de disparar alguns eventos e realizar algumas outras operações. Por isso, não é possível que ele faça coisas a menos que o show.

G

Hm…
Parece estranho isso , o setVisible(true) deveria apenas exibir tambm , pois é o mesmo metodo [/isso seguindo um lógica

Mas não tenho nada contra ele remonta a janela kkkkkkk’

flw!

Criado 14 de agosto de 2011
Ultima resposta 21 de ago. de 2011
Respostas 10
Participantes 4