Descarregando objetos da memória

Como faço para descarregar uma Toolbar do Frame? ou então retirar cada um dos botões que a compõe??

Uma JToolBar herda de JComponent, que herda de Container, os métodos getComponents(), getComponentCount() e os métodos remove(java.awt.Component) e remove(int).

Respondi recentemente uma dúvida semelhante postada aqui no fórum, que provavelmente responderá sua dúvida.

Espero ter ajudado.

Certo, já ajudou bastante, mas como eu faço para retirar o objeto de lá??? eu poderia executar um setVisible(false), ou setEnabled(false), mas ele continuaria lá. Teria alguma forma de fazer com que ele suma realmente, e sua posição de memória seja liberada para o coletor?

Rafael, vc está no fórum errado. Por isso ninguém tá respondendo sua pergunta.

Ou melhor, está. O Dango já explicou como vc remove o objeto: chamado o método remove().

Pra deixar um objeto livre para ser coletado, vc precisa sumir com todas as referências para ele, isto é, todo mundo que enxerga o objeto tem que apontar para alguma coisa. Por exemplo:

  toolbar = new JToolbar();
  toolbar.add(newButton);
  toolbar.add(openButton);
  toolPanel.add(toolbar);

Até aqui, vc tem 2 referências explícitas para o seu toolbar. Vc pode forçar o GC a coletar o seu toolbar assim:

  toolPanel.remove(toolbar);
  toolbar = null;
  System.gc();

Pode ser que os botões que vc adicionou ao toolbar também guardem referências a ele (na verdade, o toolbar é o parentComponent dos botões). Por isso, é bom remover todo mundo de dentro do toolbar:

  toolbar.removeAll();

Bom, é isso aí. Se vc tá fuçando no GC, o ideal é vc não usar o swing. Tem muitos listeners e referências ocultas. Brinca com HashMap e WeakHashMap… : )

Tudo de bom!!