/* * 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 <code>main</code> é 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 <code>serialVersionUID</code> é 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 <code>abreSecundaria</code> é 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 <code>Secundaria</code> recebe como parâmetro um * objeto da classe <code>Primaria</code>. Com o objeto você pode acessar os * métodos públicos da classe <code>Primaria</code> 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); }}