/* * 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); } }