javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
[color=red]getContentPane().setLayout(layout);[/color]
O que significa esse () no meio?
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
[color=red]getContentPane().setLayout(layout);[/color]
O que significa esse () no meio?
no meio vc fala no getContentPane()
Isso! (:
o abre e fecha parenteses sao do metodo getContentPane()
Toda função do java tem o ()…
Esteja ele vazio ou preenchido…
Como por exemplo
String m = "";
m.length();
Tá. Isso eu sei… O que eu quero saber é por que o método está no meio disso. Parece que um método invoca o outro! 
Qual a explicação sintática?
Ficaria parecido com isto .
class Content{
private Integer cod;
// get and setters
public Integer getCod(){
return cod;
}
}
class UseContent{
private Content content;
public Content getContent{
return content;
}
}
Usando um metodo para envocar outro .
UseContent u = new UseContent();
System.out.println(u.getContent().getCod());
Olá, Exploit!
Bom, vamos tentar ser objetivos.
O método getContentPane() irá retornar um objeto do tipo Container.
Objetos do tipo Container tem o método setLayout() para uso, por isso ele pode ser chamado logo após a definição do método.
Vamos a um exemplo:
public class Usuario {
private String nome;
public String getNome() { return this.nome; }
public void setNome(String nome) { this.nome = nome; }
}
public class UsuarioServices {
private Usuario usuario;
public static UsuarioService getInstance() {
return new UsuarioService();
}
private UsuarioServices() {
usuario = new Usuario();
usuario.setNome("Zé das Couves");
}
public class Usuario getUsuario() {
return this.usuario;
}
}
Bom, o que fiz ali em cima?
Temos uma classe Usuário. Ela tem seus atributos e seus métodos. É uma classe Pojo (simplificada rs).
Temos também uma classe UsuarioServices. Ela trata de alguns serviços referentes à usuários.
Por que fazer isso:
Usuario usuario = UsuarioServices.getInstance().getUsuario();
String nome = usuario.getNome();
System.out.println(nome.toString());
Sendo que posso fazer:
String nome = UsuarioServices.getInstance().getUsuario().getNome(); // Como o último método invocado (getUsuario()) retorna um objeto Usuario, já posso fazer chamada a métodos dele aqui mesmo.
System.out.println(nome.toString());
Deu pra entender mais ou menos?
[]'s
Nicolas Fernandes,
Muito obrigado pela explicação e os exemplos! Eu consegui entender o conceito. Entrentanto, surgiu uma nova dúvida…
O método getContentPane() é um getter, certo? Mas no caso
getContentPane().setLayout(layout);
ele não retorna pra nenhum objeto. Por quê?
Sim ele eh um Get , ele Retorna um tipo de objeto ContentPane com isto vc pode manipular o objeto seguinte pois vc ja te a referencia dele .
Hum… Se eu entendi bem, parece que o método getContentPane() traz como retorno um objeto cujo é reaproveitado para invocar o método setLayout(layout). Isso tudo na mesma linha.
Legal, acho que a idéia principal é ter um objeto (vindo do get) só para poder invocar um outro método set, o qual é exclusivo desse mesmo objeto. Me corrijam se estiver enganado.
Java tem muitas variações para se fazer uma mesma coisa… Aiai, coitado do programador de C ):
Relx … .Vem vindo ao mundo Java =) . :lol:
Já que eu abri um tópico de dúvida. Gostaria de abusar mais um pouquinho da boa vontade de vocês e pedir uma explicação do uso desse this:
private JPanel JPDesign;
JPDesign = new DrawingPane();
JPDesign.setBackground(Color.white);
JPDesign.addMouseListener(this);
Ele faz refêrencia a quem afinal? Um objeto externo a JPanel, um atributo interno? Qual?!
this é uma palavra reservada que faz referência à classe em questão.
Deve ser uma clase JFrame, JDialog ou algo do tipo.
Sempre que você quiser fazer referência a uma classe, um método ou atributo da mesma, use o this.
Uma prática legal essa. ^^
public class Usuario {
private String nome;
public string setNome(String nome) {
this.nome = nome;
}
Em cima, há um exemplo claro do uso do this. A variável nome da classe em questão recebe a variável por parâmetro nome.
Entendido?
[]'s
Nicolas Fernandes,
Esse seu exemplo eu entendo. Só que realmente fiquei sem entender aquele this... Vou tentar mostra mais um pouco do código pra ver se alguém me ajuda : ) Ai vai:public class Main extends javax.swing.JFrame implements MouseListener {
private JPanel JPDesign;
/** The component inside the scroll pane. */
public class DrawingPane extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
}
}
/** Creates new form Paint */
public Main() {
JPDesign = new DrawingPane();
JPDesign.setBackground(Color.white);
JPDesign.addMouseListener(this);
initComponents();
}
...
}
[]s.
Olá.
Neste seu exemplo… um programa principal cria a instância da classe Main… tipo :
...
Main teste = new Main();
...
neste momento o construtor é executado e vai acionar um método “JPDesign.addMouseListener(this);” passando como parâmetro o próprio objeto instanciado do Main que acabou de ser criado…
Ficou claro agora?
this , significa a referencia do objeto em uso corrente.
O método addMouseListener pede que você passe a ele um objeto, que implemente a interface mouseListener.
Agora, olha para a declaração de sua própria classe. Você viu que você disse que seu Main “implements mouseListener”?
Então, a forma de chamar um método addMouseListener passando “você mesmo” como parâmetro é através do this.
//Eu mesmo quero ouvir o evento de mouse de JPDesign.
JPDesign.addMouseListener(this);
Essa é a forma de dizer no construtor da classe Main, que o objeto que escutará o evento é o mesmo que está sendo construído.
No C também é possível fazer algo similar. Basta que numa função você retorne o ponteiro para outra função. É bizarro, eu sei, mas igualmente possível:
typedef float(*pt2Func)(float x) floatfunc;
floatfuncp someFunc(int x) {
return outraFuncao;
}
//mais tarde
someFunc(10)(20.f);
Então, este this esta fazendo referência a sua classe.
Valeu gente. Já entendi (: