Duvidas sobre setVisible JInternalFrame

8 respostas
Hempx
Eu tenho uma classe principal
pubic class Main extends JFrame {
   private NovoUsuario novo;
   private JDesktopPane desktop;

   public Main() {
      ...
      ...
      desktop = new JDesktopPane();
      novo = new NovoUsuario();
      desktop.add( novo );
      ...
   }
}

mas até ae tudo bem...
funciona blz... o problema é que NovoUsuario é um JInternalFrame

public class NovoUsuario extends JInternalFrame implements ActionListener {
   ...
   ...
   public NovoUsuario() {
      ...
      setVisible( true );
      ...  
   }

agora meu problema eh quando eu reescrevo o metado setVisible da classe NovoUsuario:

public void setVisible( boolean aFlag ) {
  	if( aFlag )
  	   show();
  	else hide();
  }

:arrow: quando eu dou setVisible( true ) continua funcionando normalmente, mas quando uso o metado com o argumento false parece que o JDesktopPane nao atualiza e entao o JInternalFrame fica desenhado na tela ainda... ae so quando eu minimizo e maximizo que o JDesktopPane atualiza...

:arrow: o que devo fazer ???

8 Respostas

luiz_ross

Tenta usar o dispose() ao inves de setVisible(false)

vertuam
setVisible(false);
dispose();

Usa com o dispose logo abaixo.

Hempx

mas dispose() para mim nao funciona…
porque quando eu fecho com dispose() quando tento da setVisible( true ) nao funciona mais…
parece que dispose perde a referencia para o JInternalFrame… sei la…
e eu nao queria ficar criando toda hora um JInternalFrame quando o cara click no botao NovoUsuario… queria apenas usar setVisible … e isso funciona… o problema é que precisava sobrescrever o metado para acrescentar algumas coisas… e eh justamente quando sobrescrevo o metado que o setVisible( false ) nao atualiza o JDeskTopPane.

cv1

O metodo dispose() destroi o componente, jogando o coitado pro limbo :slight_smile:

TedLoprao

E se vc chamar um validate() no mdi???

Hempx

Como assim??? O que eh mdi??? foi mal a ignorancia

:arrow: So acrescentando outra coisa, não é problema para mim sempre que a pessoa clicar por exemplo em Novo Usuario… eu criar um novo objecto NovoUsuario, entao eu usaria dispose() e dava tudo certo.
O problema é que criando um novo objeto quando o cara click num botao ou um menu, ele pode fazer isso inumeras vezes… e para mim por exemplo o Login no seria legal o cara abrir 10 janelas de Login…
Tem como eu limitar em apenas 1 o numero de um certo JInternalFrame??

leonardom

É o seu JDesktopPane

Hempx

tentei o validade()
mas nao resolveu o problema :?

:idea: Achei legal a ideia de criar um novo objeto JInternalFrame

:arrow: Mas existe como limitar o numero de instancias??? Ou existe alguma tecnica que fico sabendo que uma tela do JInternalFrame ja esta aberta, ae entao nao abro outro.
obrigado.

Criado 20 de novembro de 2003
Ultima resposta 20 de nov. de 2003
Respostas 8
Participantes 6