Duvida na primeira GUI

12 respostas
N

No codigo:

import java.awt.;
import javax.swing.
;

public class Primeiragui extends JComponent (

public static void main (String args []) {

JFrame f = new JFrame ("Alo mundo em modo grafico ");

f.setSize(300,200);

f.getContentPane().add(new Primeiragui ());

f.setVisible(true);

}

public void paintComponent(Graphics g )

{

g.drawString(" Alo mundo" , 100 , 85);

}

}

Minha duvida e no metodo : f.getContentPane().add(new Primeiragui ());

Nao entendi o (new Primeiragui()) o que e isto ? uma instancia da minha propria classe ?

nao deviria ser assim : Primeiragui objeto = new Primeiragui() ?

por que e diferente no— public void paintComponent(Graphics g ) nao deveria ser Graphics g = new Graphics()

Obrigado a todos!!!

12 Respostas

danieldestro

Isso:

f.getContentPane().add( new Primeiragui() );

É igual a isso:

Primeiragui p = new Primeiragui();
f.getContentPane().add( p );

Luiz_Henrique_Coura

No public void paintComponent(Graphics g ) você recebe uma referência de Graphics, ou seja, o objeto de Graphics que tem o nome de g irá apontar para um lugar que “já existe”.

Aqui, f.getContentPane().add(new Primeiragui ()) você não está recebendo nada, está apenas enviando um objeto(uma referência), só que anônimo.

Como o Daniel disse:

Isso:

f.getContentPane().add( new Primeiragui() );

É igual a isso:

Primeiragui p = new Primeiragui();
f.getContentPane().add( p );

Repare que ele atribuiu um nome p para a referência new Primeiragui() e logo em seguida ele utilizou em f.getContentPane().add( p )

danieldestro

Heim???
Como assim “não está recebendo nada”???

E acho que anônimo não é a palavra mais correta. Na verdade eu estou passando um objeto que eu não mantive uma referência a ele.

Luiz_Henrique_Coura

Mas aqui eu estou passando, enviando ao método add(new Primeiragui()) uma referência de Primeiragui.

É diferente do public void paintComponent(Graphics g ) que está recebendo uma referência.

Se eu tivesse colocado public Component add(Component comp), então poderia dizer que estou recebendo uma referência de Component.

Foi isso que pretendi dizer com “não está recebendo nada”.

Já a idéia do anônimo foi utilizado no sentido didático. Ele tá sem “nome”, sem uma referência.

danieldestro

Ainda não entendí aonde vc quer chegar!

Luiz_Henrique_Coura

Estou explicando o que eu escrevi.

Gostaria de saber se estou correto em pensar assim. Talvez eu esteja errado.

danieldestro

É que vc foi tão confuso, que acho que ninguém entendeu nada.

Luiz_Henrique_Coura

Acho que na verdade eu fui muito metódico, mas obrigado por me dar esse toque!

Da próxima vez eu serei mais cuidadoso.

N

“Luiz Henrique Coura”:
Acho que na verdade eu fui muito metódico, mas obrigado por me dar esse toque!

Da próxima vez eu serei mais cuidadoso.

Porém ainda não entendi quando usar o tipo de referencia que é usado em (Graphics g) quais classes que tambem posso usar este tipo de chamada? Graphics é abistrata ou nao

Obrigado

danieldestro

O método paintComponent(Graphics g) é automaticamente chamado pelas classes da API do Swing, mais especificamente quando ele manda desenhar a tela. Algum outro componente já passa uma instância de Graphics para o seu método. Esse objeto do tipo Graphics é que faz o desenho na tela.

Não há a necessidade de se trabalhar diretamente com o método paintComponent(Graphics g). Você pode criar os componentes (ex: JLabel, JTextField, etc) e adicioná-los ao seu frame.

É isso aí.

N

“danieldestro”:
O método paintComponent(Graphics g) é automaticamente chamado pelas classes da API do Swing, mais especificamente quando ele manda desenhar a tela. Algum outro componente já passa uma instância de Graphics para o seu método. Esse objeto do tipo Graphics é que faz o desenho na tela.

Não há a necessidade de se trabalhar diretamente com o método paintComponent(Graphics g). Você pode criar os componentes (ex: JLabel, JTextField, etc) e adicioná-los ao seu frame.

É isso aí.

Porque fazer referencias anonimas por que tem que ser anonimas? ou seja porque eu nao devo criar uma instancia da classe e passar o objeto ao inves de so uma referencia .

Obrigado

danieldestro

Não é TER QUE… é uma escolha sua fazer isso ou não.
Como eu disse na minha primeira resposta, aquelas duas opções são iguais.

Criado 28 de outubro de 2004
Ultima resposta 29 de out. de 2004
Respostas 12
Participantes 3