JInternalFrame: como redimensioná-lo automaticamente?

Boa noite gujeiros. Estou precisando de uma ajuda de vocês. Eu estou aprendendo Swing agora (com o NetBeans) e pintou um problema que eu não consegui resolver. Eu criei um JFrame e dentro dele coloquei um JDesktopPane, chamado principalDesktopPane.
Também adicionei um menuBar, e dentro dele coloquei um menu que tem um menuItem chamado Teste. O meu objetivo eu consegui, que era chamar um JInternalFrame dentro do meu JDesktopPane, a partir de um click no menuItem Teste. Abaixo está o código do evento.

    private void clicaAquiMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
       
            meuNovoInternalFrame a = new meuNovoInternalFrame();
            a.setVisible(true);
            a.setSize(800,600);

            principalDesktopPane.add(a);

        

    }

Mas daí percebi o seguinte:
Quando coloco o programa para executar, ele funciona normal, abre o meu InternalFrame, mas daí, quando eu minimizo a janela principal, ele não minimiza também, ou então, caso eu sete o tamanho dele pra menor, ele não abre do tamanho da janela principal.
Resumindo, como eu faço pra que o meu JInternalFrame redimensione automaticamente conforme o meu Frame aumente ou diminua? Grato.

Acho que há duas maneiras de resolver. A primeira é você maximizar o JInternalFrame após inseri-lo no JDesktopPane:

A outra é você registrar um ComponentListener no seu JDesktopPane, e nesse ComponentListener redefinir o método componentResized(). Dentro de componentResized() você pode propagar o novo tamanho do JDesktopPane para os frames que estiverem contidos nele.

Roger, deu certo!!!

Meu código ficou assim:

     private void clicaAquiMenuItemActionPerformed(java.awt.event.ActionEvent evt) {  
    meuNovoInternalFrame a = new meuNovoInternalFrame(); 

       principalDesktopPane.add(a);  
          a.setVisible(true);  
             try {
             a.setMaximum(true);
                } catch (PropertyVetoException ex) {
            
        }
     
  }  

Agora só tem um probleminha. É que no JInternal tem um botão. Conforme meu JInternalFrame maximiza ou minimiza, ele muda de lugar na tela. Eu gostaria de deixá-lo centralizado sempre. Qual a propriedade em que eu seto esse valor? É alguma coisa do tipo, setAlinhamento(CENTRO) ?

Abraço!!!

alguem me explica porque isto nao esta funcionando?

   private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
      NewJInternalFrame i = new NewJInternalFrame();
      JFrame jf = new JFrame();
      JDesktopPane pane = new JDesktopPane();
      i.setVisible(true);
      jf.setVisible(true);
      pane.add(i);
      jf.add(pane);
      pane.setVisible(true);

Nikos, no seu codigo, você criou um JInternalFrame, mas não definiu um tamanho pra ele.

i.setSize();

No demais, acho que ficou ok. Tenta aí.

Oddy: para que seu botão fique sempre centralizado, sugiro colocá-lo dentro de um JPanel (ou qualquer outro container), onde o LayoutManager desse JPanel é um FlowLayout. A propriedade Alignment do FlowLayout, por sua vez, deve ser ajustada para FlowLayout.CENTER.

Niksop: você fez tudo direito, só faltou definir o tamanho e a posição do JFrame - se você não fizer isso, o tamanho padrão é 0x0 e a posição padrão é 0,0. Experimente o seguinte:

[code] JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());

  JDesktopPane desktop = new JDesktopPane();
  frame.add(desktop, BorderLayout.CENTER);

  NewJInternalFrame internalFrame = new NewJInternalFrame();
  desktop.add(internalFrame);
  internalFrame.setVisible(true);

  frame.setSize(500, 500);
  frame.setLocation(50, 50);
  frame.setVisible(true);

[/code]