Qual a finalidade do método getContentPane()?

9 respostas
R

Não sei qual a função deste método…
Se alguém explicar com um exemplo simples fico muito grato!

9 Respostas

C

é um container onde vc coloca todos os objetos de interface dentro dele.

F

Me corrijam se estiver errado.

Pelo que me lembro isso é o seguinte…

objeto.getContentPane().add(botao)

objeto.getContentPane() vai te retornar toda a área (painel de conteúdo, creio que traduzido seja isso) na qual vc pode adicionar os seus outros objetos como botões, caixas de texto, etc…

espero ter ajudado

R

Fabio, obrigado pela explicação. Entendi o que você quis dizer.

Mas é necessário usar o getContentPane?
Por exemplo… eu poderia apenas usar um frame.add(botao) no caso…
Ou não?
Qual a diferença?

D

Se vc fizer isso direto, vai receber uma exceção dizendo pra usar o getContentPane().

Isso porque existem algumas camadas num JFrame… dá uma olhada aqui pra vc ver: http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html#rootpane

Provavelmente, todos os outros vc não vai usar nunca, mas como eles estão lá não tem jeito, você precisa selecionar a camada onde vc quer colocar seu controle…

flw, espero ter ajudado em algo

R

Ajudou sim!!!

Mas ainda fico com uma dúvida... getContentPane é mais usado quando quero organizar conteiners dentro da minha janela?

Pois no código abaixo não uso getContentPane e funciona...

import javax.swing.*;
import java.awt.*;
 
 public class Teste extends JFrame
 {
 
     public Teste()
     {
                
         super("Teste");
         setLayout(new FlowLayout());
         
         JButton botao1 = new JButton("Botão 1");
         JButton botao2 = new JButton("Botão 2");
         JButton botao3 = new JButton("Botão 3");
         JButton botao4 = new JButton("Botão 4");
         JButton botao5 = new JButton("Botão 5");
         
         add(botao1);
         add(botao2);
         add(botao3);
         add(botao4);
         add(botao5);
         
         
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         
         setSize(300,300);
         setVisible(true);
     }
         
     public static void main(String args[])
     {
         new Teste();
     }
 }

Qual a diferença de quando uso e não uso getContentPane?
E quando usa-lo?

D

Ué, funcionou é? Aqui saiu isso aqui:

Ah sim, só troquei o nome da classe e coloquei o pacote, mais nada…

R

Que estranho cara… aqui compila e funciona?
Eu to usando o jcreator… será que interfere em alguma coisa?

Essa coisas so acontecem comigo haeihai
Mas valeu cara!

S

Existe um post bem legal do blog do Hans Muller, da sun, onde ele fala por que resolveram fazer desta forma.

S

No mesmo post que citei anteriormente ele diz que eles redirecionaram os métodos add e setLayout para fazerem

e

Hans Muller:


So, in Tiger, JFrame’s add and setLayout (and addLayout) methods have changed to “do what you [probably] mean”. The other JFrame methods, like getComponent(), do not redirect, so if you use them, be careful. And if you don’t use them, well, ignorance is bliss.

por isso que funciona, ou seja, com o tiger pode fazer como quiser

Criado 14 de julho de 2006
Ultima resposta 19 de jul. de 2006
Respostas 9
Participantes 5