:shock: Oi!
Seguinte pessoal, me cadastrei agora nesse forum mas eu já frequentava ele como um visitante e tal, e gostei dele mesmo.
ok.
Então eu queria aproveitar e pedir uma ajuda em relação com
Containers em java, a pergunta é:
Porque ( em todos os exemplos do livro que eu uso vejo isso ) tem esse tipo de código aqui.
j do tipo JFrame.
Container container = f.getContentPane();
( suponha que nesse exemplo não é subclassificado uma classe de JFrame )
Ok, agora eu quero saber porque sempre é usado o container ao invés do JFrame, por exemplo container.add(algumaCoisa); e não j.add(algumaCoisa); já que JFrame é derivado de Container.
Pois é, não entendi por que usar o JFrame se depois é colocado tudo dentro do Container, isso vale para outros containers também, JPanel…etc.
Se alguem puder me ajudar a me explicar porque tem que ser feito sempre isso eu iria agradecer muito! Eu não encontrei nada que explique exatamente esse conceito.
Valeu!
Ola Scrabby…seja bem vindo ao GUJ!!
Bom, em relação a sua pergunta do container, aprendi, desde o inicio a fazer aplicações usando o container…vamos a um pequeno codigo:
JFrame frame = new JFrame();
Container c = frame.getContentPane();
Na verdade, acredito que vc será uma pessoa livre para escolher o modo que deseja fazer, ou do jeito que esta acima, ou sem usar o container…na verdade, como o nome ja diz, um container nada mais eh do que algo que “armazena” alguma coisa…então, os containers em java armazenam os componentes que vc deseja setar no seu JFrame…quando vc atribui ao Container o getContentPane(), que eh um metodo do JFfame, vc esta dando a “permissão” para que o container guarde para vc( c.add(alguma coisa)
os componentes que ira setar na tela…bom, aprendi assim, e particularmente uso o container e não vejo pq não usar…“instinto de programador java”… :lol: 
ate mais…
1 curtida
hmmmmm…até agora entendi. valeu amigo
Mas tem outra dúvida, :twisted: (gostei desses smiles!)
isso quer dizer que nao preciso mais usar o JFrame?
eu somente uso agora o Container? ou Se eu incluir um componente dentro do JFrame ele já irá automaticamente para o Container ? ? ?
Olha vou digitar uma PARTE do código do livro aqui:
[color=“blue”]
JFrame f = new JFrame( “Frame teste” );
f.setLocation( 100, 100 );
Container content = f.getContentPane( );
content.setLayout( new FlowLayout( ) );
*content.add( new JLabel( “Teste” ) );
*content.add( new JButtonl( “Pressione-me” ) );
f.pack( );
f.setVisible( true );
[/color]
[color=“red”]* o que não entendi aqui é porque to adicionando componentes diretamente ao content, eu achava que teria que ser no f[/color]
Espero que tenho sido claro na minha dúvida!
caro amigo…
o Container serve p/ vc adicionar seus componentes visuais…ele facilita sua vida na hora de montar sua interface grafica…
como o Container possui a area do JFrame, vc adiciona tudo no container e jah vai tudo p/ area do JFrame…
ele serve tb p/ melhorar seu codigo um pouco…fica mais simples e claro adicionar seus componentes no Container do q do JFrame diretamente…
e caso vc queira atualizar sua tela (retirar um botao e colocar outro, em um dado momento), com o Container fica pouco mais simples…
mas claro q tudo isso eh questao de gosto do programador…ai vai da sua preferencia em usa-lo ou nao…
falow
pessoal
eu to precisando saber disso
vai, alguem aí perca um tempinho pra explicar
tenham dó !
Vamos lá Scrabby
acho que entendi sua duvida…vc deve estar com duvida em relação a pq atribuit o JFrame ao container e depois dar, por exemplo f.pack(), sendo que tudo eh adicionado no container…eh isso?
Bom, vou tentar explicar…quando vc atribui ao container o frame.getContentPane(), vc esta dizendo ao compilador que ele deve ter a função do getContentPane() na tela, que nada mais eh do que um metodo da classe JFrame…quando vc vai setar o tamanho do seu JFrame, dar show() nele, vc nao pode fazer isso ao Container, pois vc esta atribuindo ao container um metodo da classe JFrame, o getContentPane() e não atribuindo o JFrame mesmo, ou seja, o form em si…veja soh:
JFrame f = new JFrame();
Container content = f.getContentPane();
//na linha acima, vc chama o metodo getContentPane() da classe JFrame representado aqui pelo f e atribui ao Container....sendo o getContentPane() responsavel por "setar" os componentes na tela, isso fica a cargo do container.
//Vamos a um exemplo, caso a classe extenda do JFrame
public class teste extends javax.swing.JFrame
{
Container c = getContentPane();
}
Viu a diferença…no exemplo acima, simplesmente atribui ao container o getContentPane(), pq ele eh um metodo do JFrame, classe ao qual herda a classe teste, por isso vc esta apenas manipulando um metodo do JFrame, nao o JFrame em si, por isso vc usa ele somente para incluir componentes na tela.
Deu para entender?? 
Ate mais…
[quote=“richardpeder”]
acho que entendi sua duvida…vc deve estar com duvida em relação a pq atribuit o JFrame ao container e depois dar, por exemplo f.pack(), sendo que tudo eh adicionado no container…eh isso?[/quote]
ISSO!
sim sim agora eu entendi! ( espero ter entendido certo! )
meu cara valeu mesmo, muito obrigado!
Sabe esse forum eu achei tão interessante que vou começar a gravar o fórum em um arquivo html para futuras pesquisas! e quem sabe para copiar e colar aqui, porque com certeza haverá dúvidas repetidas.
O pessoal aqui da uma ajuda tão boa que parece um tutorial, sério mesmo, desde java básico e avançado( são esses dois que eu só frequento ), bem bem, falow.