Fazer internal frame crescer

Ola para todos.

A minha duvida é a seguinte, tenho um jFrame principal, para ser mais preciso uma tela para cadastrar clientes, um dos campos do cadastro é cidade onde pode se escolher a cidade em uma lista que o usuario cadastrou previamente em outra tela, o cadastro de cidades, mas se a cidade do cliente sendo cadastrado ainda nao foi cadastrada eu vou colocar um botão pequeno ao lado do campo cidade e ao aprertar nele vai abrir um internalframe aonde ele pode cadastrar a cidade sem sair do frame de cadastro de clientes.

Ate ai tudo bem, mas eu gostaria de fazer algo a mais, ao clicar o internalframe estaria com o tamanho (0, 0), fiz um loop e a cada volta o tamanho aumenta 1, assim a janela cresce ao inves de aparecer eis o codigo que tentei:

  private int s1 = 0; private int s2 = 0; 

[code]while(this.s1 < 200){
try {
Thread.sleep(5);
} catch (InterruptedException ex) {
Logger.getLogger(TesteInternal.class.getName()).log(Level.SEVERE, null, ex);
}

        jInternalFrame1.setSize(this.s1, 20);
        this.s1++;            
    }
    while(this.s2 <200){
        try {
            Thread.sleep(5);
        } catch (InterruptedException ex) {
            Logger.getLogger(TesteInternal.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        jInternalFrame1.setSize(this.s1, this.s2);
        this.s2++;
    }

[/code]

com esse codigo a janela aumenta, mas nao aumenta a cada volta.
existe alguma maneira de fazer isso? Obrigado!

Não sei se esse código está na fila de eventos do Swing (que pode ser testado pelo método SwingUtilities.isEventDispatchThread(); ).
Mas considerando que sim, tente colocar ao fim de cada loop jInternalFrame1.revalidate();

Caso não esteja na fila de eventos do swing, deve ser colocado no mesmo ou através do: SwingUtilities.invokeLater(new Runnable() { @Override public void run() { //... } }); ou EventQueue.invokeLater(new Runnable() { @Override public void run() { //... } });
Ambas as chamadas chegam no mesmo fim…
E, também deve-se colocar o revalidate().

Não estar na fila de eventos pode causar comportamentos inesperados (incluindo deadlock)