A quem se refere o this aqui

Tô botando um código e tenho algumas dúvidas sobre ele:

[code]import javax.swing.JFrame;
import java.awt.Color;
import javax.swing.JButton;

public class Janela extends JFrame {
private JButton btnOK ;
public Janela() {

	//super("Janela Tela");
	this.setTitle("Janela Tela");
	this.getContentPane().setLayout(null);
	this.setSize(340,220); 

	this.setLocationRelativeTo(null);
	
	this.getContentPane().setBackground(Color.RED);	
	
	this.btnOK = new JButton("OK");
	btnOK.setBounds(100,100,55,25);
	
	this.getContentPane().add(btnOK);
	
}

public static void main(String[] args) {
	Janela j = new Janela();
	 
	j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	j.setVisible(true);
}

}[/code]

Por que pode usar tanto o seTitle quanto o super?

//super("Janela Tela"); this.setTitle("Janela Tela");

Eu sei que esse this ai na frente não precisa pois está implicitamente, mas
ele se refere á quem, à JFrame. à Janela, ou quando ela é instanciada com JFrame J = new Janela(); ?

this.setTitle("Janela Tela");

O getContentPane() server para obter o painel que está a frente do JFrame?

this.getContentPane();

por que eu não posso adicionar um botão assim diretamente?
Vamos supor que meu Layout seja outro qualquer…

//this.add(btnOK);

É padrão usar todos os componentes como privados(eu sei o que quer dizer private ), porquê?

private JLabel l1;

Já me disseram que os parâmetros que estão ai (JFrame.EXIT_ON_CLOSE)
poderia ser um número, o EXIT_ON_CLOSE tem equivalência com algum número?

j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Outra suposição, vamos supor que eu tenha esse código ai junto ao meu:
Esse this como parâmetro se refere á quem?

this.btnOK = new JButton("OK"); this.btnOK.addActionListener(this);

Vamos supor que minha Janela esteja implementando um ActionListener,
essa ordem de hierarquia,pois Janela herda de JFrame e implementa ActionListener, quem é pai de quem?
Eu ouvi falar que o this se refere á superclasse,e ntão esses this se referem por exemplo á JFrame?

Esse código aí, entendi mais ou menos, só que:
Esse (e) na frente do ActionEvent o que é e pra que server?
Eu sei o que faz o getSource, mas teóricamente o que el faz?
Porque foi usado a superclasse de todos aí e jogado o getSource nela?

public void actionPerformed(ActionEvent e){ Object o =e.getSource(); if (e.getSource().equals(btnOK)) { System.out.println("Chamou....: OK"); new Janela().show(); } else if ( o.equals(btnCancel)){ System.out.println("Chamou....: CANCEL"); System.exit(0); } }

Eu acho que chega por enquanto! hehehe
Se alguém puder me ajudar, esses pequenos detalhes é que tá pegando.
Valeu!!!

super é o construtor da classe, a função dele entre outras coisas é iniciar atributos de classe, no caso da jframe que sua classe herda ele inicia o titulo, provavelmente usando setTitle("…"), mas vc pode altera-lo após com essa função.

a palavra reservada this faz refeerencia a propria classe , quando usamos o this.atribuito estamos fazendo referencia ao atribuito da classe mas se usarmos por exemplo super.atributo nos referimos ao atributo da classe para que a classe filho herda.

por que eu não posso adicionar um botão assim diretamente?
não tenho certeza mas acho que soh se pode adicionar botoes e outros compomentes a um content

É padrão usar todos os componentes como privados(eu sei o que quer dizer private ), porquê?
padrão não é mas dizem que é uma boa pratica , pois uma das grandes vantagem da OO é o encapsulamento

Seguinte:

//super("Janela Tela"); this.setTitle("Janela Tela");

Dá uma olhada como é o construtor do JFrame (um dos construtores):

public JFrame(String title) throws HeadlessException { super(title); frameInit(); }
Ele chama super(title). Olha o construtor do Frame:

public Frame(String title) throws HeadlessException { init(title, null); } // Chamou init(), que é: private void init(String title, GraphicsConfiguration gc) { this.title = title; // Aqui passou o título weakThis = new WeakReference(this); addToFrameList(); SunToolkit.checkAndSetPolicy(this, false); }

No final das contas, atribuiu à variável title o valor da String.

No setTitle():

[code]public void setTitle(String title) {
String oldTitle = this.title;
if (title == null) {
title = “”;
}

    synchronized(this) {
        this.title = title; // Passou o título
        FramePeer peer = (FramePeer)this.peer;
        if (peer != null) {
            peer.setTitle(title);
        }
    }
    firePropertyChange("title", oldTitle, title);
}[/code]

O this se refere ao próprio objeto da classe Janela. No caso, à variável j.

Ele retorna um objeto do tipo Container, que vai conter os outros componentes (botão, label, etc).

Você tem que adicionar no Container do JFrame. Por isso que o recupera com getContentPane() e depois chama o add(). Se achar menos chato, pode fazer assim:

Container c = getContentPane(); // ou this.getContentPane(); c.add(botao);

É uma forma de segurança, “esconder” as variáveis de instância. Perceba que você não pode fazer, diretamente:Janela j = new Janela(); j.title = "Titulo"; Precisa usar o setTitle(). Imagine se ao invés de “Titulo”, você usasse um inteiro. Daria erro.

[quote]Já me disseram que os parâmetros que estão ai (JFrame.EXIT_ON_CLOSE)
poderia ser um número, o EXIT_ON_CLOSE tem equivalência com algum número?[/quote]
Tem sim. Olha aí na classe JFrame:

public static final int EXIT_ON_CLOSE = 3;

Por padrão, nomes de constantes são sempre em maiúsculas, e as palavras são separadas por _.

[quote]Vamos supor que minha Janela esteja implementando um ActionListener,
essa ordem de hierarquia,pois Janela herda de JFrame e implementa ActionListener, quem é pai de quem?
Eu ouvi falar que o this se refere á superclasse,e ntão esses this se referem por exemplo á JFrame? [/quote]
Janela é filho de JFrame (que é filho de Frame, que é filho de Window, que é …, que é filho de Object) :razz:
Janela implementa todos os métodos de ActionListener, também.
Não, this se refere ao próprio objeto. No caso, ao objeto j.

[quote]Esse código aí, entendi mais ou menos, só que:
Esse (e) na frente do ActionEvent o que é e pra que server?
Eu sei o que faz o getSource, mas teóricamente o que el faz?
Porque foi usado a superclasse de todos aí e jogado o getSource nela?
[/quote]

Ele é a variável que referencia o ActionEvent. Você poderia ter usado outro nome, se quiser. O getSource() retorna o objeto que gerou o evento. Nesse exemplo, o evento pode ter sido gerado pelo OK ou CANCELAR. Se quiser ver exatamente o que o método faz, só verificando o código…
Eu acho que foi usado Object pra tornar o código menos específico. Poderia ter usado JButton nesse exemplo, mas se tivesse um JTextField, teria que ser usado a superclasse do JTextField e do JButton, então a pessoa usou logo Object, creio eu.