Acessar dados entre JDialogs

Java

28/04/2011

Olá pessoal.

Estou tentando implementar o seguinte:
- No LoginDialog, eu tenho um btOKActionPerformed que executa o método validador (login/password). 

Se isValid() --> RecebeDialog.setVisible(true). 

O que eu quero é mostrar o nome do login validado em um loginLabel localizado em RecebeDialog.

Alguém sabe como fazer ?
(check line 28 to 33) 

package paramdialogs;    import javax.swing.JOptionPane;    /**  * @author F6750699  */  public class LoginDialog extends javax.swing.JDialog {        public String str = null;        public LoginDialog(java.awt.Frame parent, boolean modal) {          super(parent, modal);          initComponents();          getRootPane().setDefaultButton(btOK);      }        private void btOKActionPerformed(java.awt.event.ActionEvent evt) {                                               if (!(txtSenha.getText()).equals("123")) { // a simple validation, just to test              JOptionPane.showMessageDialog(this, "Wrong password !");              return;          }          RecebeDialog rd = new RecebeDialog(null, true);          rd.setVisible(true);          getLogin();       }                                        // this is the method wich isn't working as I wish      public String getLogin() {          str = txtLogin.getText();          System.out.print("LoginDialog: " + str + "\n"); // just to check it out          return str;      }        // <editor-fold defaultstate="collapsed" desc="Generated Code">      private void initComponents() {            jPanel1 = new javax.swing.JPanel();          txtLogin = new javax.swing.JTextField();          btOK = new javax.swing.JButton();          txtSenha = new javax.swing.JTextField();          jLabel1 = new javax.swing.JLabel();          jLabel2 = new javax.swing.JLabel();            setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);          setTitle("Enter data");          setBackground(new java.awt.Color(204, 255, 255));            jPanel1.setBackground(new java.awt.Color(204, 204, 255));          jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));            txtLogin.setToolTipText("Type 123 to validate...");            btOK.setText("OK");          btOK.addActionListener(new java.awt.event.ActionListener() {              public void actionPerformed(java.awt.event.ActionEvent evt) {                  btOKActionPerformed(evt);              }          });            txtSenha.setToolTipText("Type 123 to validate...");            jLabel1.setText("Login:");            jLabel2.setText("Password");            javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);          jPanel1.setLayout(jPanel1Layout);          jPanel1Layout.setHorizontalGroup(              jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)              .addGroup(jPanel1Layout.createSequentialGroup()                  .addContainerGap()                  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)                      .addComponent(btOK, javax.swing.GroupLayout.Alignment.TRAILING)                      .addGroup(jPanel1Layout.createSequentialGroup()                          .addComponent(jLabel1)                          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                          .addComponent(txtLogin, javax.swing.GroupLayout.DEFAULT_SIZE, 152, Short.MAX_VALUE))                      .addGroup(jPanel1Layout.createSequentialGroup()                          .addComponent(jLabel2)                          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                          .addComponent(txtSenha, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE)))                  .addContainerGap())          );            jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {txtLogin, txtSenha});            jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel2});            jPanel1Layout.setVerticalGroup(              jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)              .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()                  .addContainerGap()                  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)                      .addComponent(jLabel1)                      .addComponent(txtLogin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)                      .addComponent(jLabel2)                      .addComponent(txtSenha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 27, Short.MAX_VALUE)                  .addComponent(btOK)                  .addContainerGap())          );            jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {txtLogin, txtSenha});            jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jLabel1, jLabel2});            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());          getContentPane().setLayout(layout);          layout.setHorizontalGroup(              layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)              .addGroup(layout.createSequentialGroup()                  .addContainerGap()                  .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)                  .addContainerGap(19, Short.MAX_VALUE))          );          layout.setVerticalGroup(              layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)              .addGroup(layout.createSequentialGroup()                  .addContainerGap()                  .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)                  .addContainerGap(20, Short.MAX_VALUE))          );            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();          setBounds((screenSize.width-271)/2, (screenSize.height-189)/2, 271, 189);      }// </editor-fold>        public static void main(String args[]) {            java.awt.EventQueue.invokeLater(new Runnable() {                public void run() {                  LoginDialog dialog = new LoginDialog(new javax.swing.JFrame(), true);                  dialog.addWindowListener(new java.awt.event.WindowAdapter() {                        public void windowClosing(java.awt.event.WindowEvent e) {                          System.exit(0);                      }                  });                  dialog.setVisible(true);              }          });      }      // Variables declaration - do not modify      private javax.swing.JButton btOK;      private javax.swing.JLabel jLabel1;      private javax.swing.JLabel jLabel2;      private javax.swing.JPanel jPanel1;      private javax.swing.JTextField txtLogin;      private javax.swing.JTextField txtSenha;      // End of variables declaration  }  


Aqui, a classe RecebeDialog: 

(ckeck line 8 and 12 to 17) 
package paramdialogs;    public class RecebeDialog extends javax.swing.JDialog {        public RecebeDialog(java.awt.Frame parent, boolean modal) {          super(parent, modal);          initComponents();          pegaLogin();                           // this is a call to the 'not-working-as-I-wish' method          getRootPane().setDefaultButton(btVoltar);      }        public final void pegaLogin() {          LoginDialog ld = new LoginDialog(null, true);          String x = ld.getLogin();          loginLabel.setText(x);          System.out.print("RecebeDialog: " + x + "\n");          }      // <editor-fold defaultstate="collapsed" desc="Generated Code">      private void initComponents() {            jPanel1 = new javax.swing.JPanel();          jLabel1 = new javax.swing.JLabel();          btVoltar = new javax.swing.JButton();          loginLabel = new javax.swing.JLabel();            setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);          setTitle("Result");          setBackground(new java.awt.Color(204, 255, 204));            jPanel1.setBackground(new java.awt.Color(255, 255, 204));          jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());            jLabel1.setText("Typed Login:");            btVoltar.setText("Voltar");          btVoltar.addActionListener(new java.awt.event.ActionListener() {              public void actionPerformed(java.awt.event.ActionEvent evt) {                  btVoltarActionPerformed(evt);              }          });            loginLabel.setText(" ");            javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);          jPanel1.setLayout(jPanel1Layout);          jPanel1Layout.setHorizontalGroup(              jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)              .addGroup(jPanel1Layout.createSequentialGroup()                  .addContainerGap()                  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)                      .addGroup(jPanel1Layout.createSequentialGroup()                          .addComponent(jLabel1)                          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                          .addComponent(loginLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 152, Short.MAX_VALUE))                      .addComponent(btVoltar, javax.swing.GroupLayout.Alignment.TRAILING))                  .addContainerGap())          );          jPanel1Layout.setVerticalGroup(              jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)              .addGroup(jPanel1Layout.createSequentialGroup()                  .addContainerGap()                  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)                      .addComponent(jLabel1)                      .addComponent(loginLabel))                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 21, Short.MAX_VALUE)                  .addComponent(btVoltar)                  .addContainerGap())          );            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());          getContentPane().setLayout(layout);          layout.setHorizontalGroup(              layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)              .addGroup(layout.createSequentialGroup()                  .addContainerGap()                  .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)                  .addContainerGap(35, Short.MAX_VALUE))          );          layout.setVerticalGroup(              layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)              .addGroup(layout.createSequentialGroup()                  .addContainerGap()                  .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)                  .addContainerGap(23, Short.MAX_VALUE))          );            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();          setBounds((screenSize.width-305)/2, (screenSize.height-154)/2, 305, 154);      }// </editor-fold>        private void btVoltarActionPerformed(java.awt.event.ActionEvent evt) {                                                 setVisible(false);      }                                                // Variables declaration - do not modify      private javax.swing.JButton btVoltar;      private javax.swing.JLabel jLabel1;      private javax.swing.JPanel jPanel1;      private javax.swing.JLabel loginLabel;      // End of variables declaration    }
Agradeço.

Jmarcel

Jmarcel

Curtidas 0

Respostas

Anthony Accioly

Anthony Accioly

28/04/2011

JMarcel,
Você poderia passar o login para o construtor da RecebeDialog:
 private String login;
 public RecebeDialog(java.awt.Frame parent, boolean modal, String login) {          super(parent, modal);          initComponents();          // depois você junta com initComponents() ou seu outro método        this.login = login;         loginLabel.setText(login);          getRootPane().setDefaultButton(btVoltar);   } 
 
Daí no método que exibe da outra janela:
 private void btOKActionPerformed(java.awt.event.ActionEvent evt) {                                           if (!(txtSenha.getText()).equals("123")) { // a simple validation, just to test        JOptionPane.showMessageDialog(this, "Wrong password !");        return;      }      RecebeDialog rd = new RecebeDialog(null, true, txtSenha.getText());      rd.setVisible(true);      getLogin();    }
 
Abraços,
GOSTEI 0
Dyego Carmo

Dyego Carmo

28/04/2011

Passe uma dialog como parametro do contrutor da outra , assim voce tem o acesso completo aos recursos :)

Qualquer coisa avise :)

GOSTEI 0
Anthony Accioly

Anthony Accioly

28/04/2011

Resolvido?

Se sim, por favor atualize o status da chamada.
GOSTEI 0
Dyego Carmo

Dyego Carmo

28/04/2011

Resolvido ? Se sim , poderia fechar ? Valeu !
GOSTEI 0
Jmarcel

Jmarcel

28/04/2011

Já está tudo resolvido.
Desculpem pela demora por fechar o post.
Obrigado.
GOSTEI 0
POSTAR