/*
* Main.java
*
* Criado em 15 de abril de 2009, 14:20
*/
package orkut;
import javax.swing.SwingUtilities;
/**
* Esta classe representa a aplicação.
*
* @author João Henrique
*
*/
public class Main {
/**
* O método main é o ponto de partida de uma aplicação Java.
*
* @param args os argumentos da linha de comando
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Principal();
}
});
}
}
/*
* Principal.java
*
* Criado em 15 de abril de 2009, 16:00
*/
package orkut;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
/**
* Esta classe representa a janela principal do aplicativo.
*
* @author João Henrique
*
*/
public class Principal extends JFrame {
/**
* O serialVersionUID é usado na serialização de objetos.
*/
private static final long serialVersionUID = 2267694190077033650L;
private JTextField nome;
private JButton abrir;
public Principal() {
super("Principal");
initComponents();
}
private void initComponents() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container container = getContentPane();
container.setLayout(new FlowLayout(FlowLayout.LEADING, 5, 5));
JLabel label = new JLabel("Nome: ");
nome = new JTextField("Abra a janela secundária para alterar este texto");
nome.setPreferredSize(new Dimension(400, 25));
abrir = new JButton("Abrir janela secundária");
abrir.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
abreSecundaria(); // método definido abaixo
}
});
container.add(label);
container.add(nome);
container.add(abrir);
pack();
setVisible(true);
}
/**
* O método abreSecundaria é quem chama a janela secundária.
*/
private void abreSecundaria() {
new Secundaria(this);
}
public void setNome(String novoNome) {
nome.setText(novoNome);
}
}
/*
* Secundaria.java
*
* Criado em 15 de abril de 2009, 16:10
*/
package orkut;
import java.awt.Label;
import javax.swing.JFrame;
/**
* Esta classe representa a janela secundária.
*
* @author João Henrique
*
*/
public class Secundaria extends JFrame {
private static final long serialVersionUID = -580081156339552659L;
/**
* O construtor da classe Secundaria recebe como parâmetro um
* objeto da classe Primaria. Com o objeto você pode acessar os
* métodos públicos da classe Primaria e assim alterar dados em
* campos de textos ou outro componente qualquer. Aqui é alterado um campo de
* texto (JTextField).
*
* @param janela o objeto da janela Principal.
*/
public Secundaria(Principal janela) {
// Claro que você não faria esta alteração no construtor (na maioria das vezes).
janela.setNome("Este é o novo texto. O segredo está em passar a instância do objeto.");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
getContentPane().add(
new Label("Ao abrir esta janela, o texto do JTextField foi alterado."));
pack();
setVisible(true);
}
}