JFrame

Bom Dia, como sou novato em java me deparo com um problema, que para muitos deve ser algo bobo.

criei um controle de conta corrente basico, meu problema é o seguinte…criei um Frame"Entrada de Dados" onde recebo os valores A e B e tenho outro Frame “Extrato”, ao clicar no botão visualizar gostaria de mostrar estes valores, e não consigo, alguma diva por favor ?

Existem várias formas de fazer isso. Pode chamar outro frame e montar uma tabela para visualização. Em vez da tabela , pode criar uma textArea para mostrar, pode usar o jasperReport para visualização do relatório e talvez uma posterior impressão. Pode também usar um EditorPane e mostrar o seu extrato em formato html… enfim…

MEU problema não é no modo de visualizar, se coloquei dessa forma desculpe. o problema é pegar os valores digitado nas jTextFieldA e jTextFieldB que fazem parte da frame Entrada de Dados, e mostrar atraves de JOptionPane.showMessageDialog por exemplo…so que dentro de outro Frame…não sei se fui mais claro agora.

grato.

Bom…Vamos as questões


//1) - pegar os valores dos textField
String valorA = jTextFieldA.getText();
String valorB = jTextFieldB.getText();

Certamente este outro frame está numa outra classe …certo?
Se sim, adicione no método contrutor os argumentos que recebem estes valores ou em um outro método qualquer, por exemplo , setValores(String valorA, String valorB) … assim…

[code]
//Metodo da classe que extende o segundo JFrame
public void setValores(String valorA, String valorB){
JOptionPane.showMessageDialog(null,"Valor A = " + valorA + " valor B = " + valorB);

}[/code]

ok com relação a primeira parte.

agora no segundo Frame “que é minha classe A” tenho um botão, e no evento de clicar nesse botão quero msotrar os vaores capturados nas caixas de texto do outro Frame " que é a classe Entrada", como faço esta amarração ? as caixas de texto estão numa classe e a mensagem vai aparecer em outra…isto q não consegui visualizar.

desculpe o incomodo.

Este segunto frame que é a classe que visualiza os valores é gerado por alguma ação da classe de entrada dos dados? Ou uma tela não chama a outra?

na verdade eu tenho uma tela principal, onde pssui botão entrada de dados que chame meu Frame e digito os valores A e B em duas caixas de texto e um botão onde chamo o Frame “A” para estar vizualindo os valoers digitados, dai dentro do frame A tenho um botão que ao clicar ele retorna a mensagem com os valores digitados.

Então… Vc pode criar um método no frame de entrada dos valores , por exemplo…

public String getValorA(){
  return textFieldA.getText();
}

public String getValorB(){
  return textFieldB.getText();
}

e quando clicar no botao de visualização ( que chama o Frame “A”), ou seja, na ação do botão, você pega os dois valores e passa esses como argumento para construir o frame “A”, tipo assim…


FrameA frameA = new FrameA(frameEntrada.getValorA(), frameEntrada.getValorB())



//depois deixa visível o frame "A"
frameA.show();

No Frame “A” você constrói a visualização do jeito que vc quer…por uma tabela ou JOptionPane… Mas no construtor dele, faça receber os dois argumentos

ola…ainda não consegui visualizar…é complicado tu me enviar esse codigo pronto ?

Assim…
Voce tem a classe A que é a classe principal que possui dois botões… um que chama o frame de cadastros (Classe B) e outro que chama a classe de visualização dos valores digitados(Classe C)… é o que eu entendi que vc quer fazer… então…

na classe A vc coloca a ação no botão para abrir o frame da classe B (inserção de valores) certo?

na classe B vc adiciona os métodos getValorA e getValorB, como citei no post anterior…

monta a classe C onde no contrutor desta classe, vc adiciona dois argumentos, String valorA e String valorB

Se sim… então ainda na classe A…na ação para abrir a classe C(de visualização) , no momento de inicializá-la (Sim no nomento que voce faz new classeC ) você passa os dois argumentos da classeB buscando os valores pelos métodos getValorA() e getValorB() então a inicialização da classe C ficaria assim ClasseC classeC = new ClasseC(classeB.getValorA(), classeB.getValorB()). Assim ao inicializar a classe C (de visualização estaria passando já o que foi digitado na classeB (de inserção de dados) depois fica fácil mostrar…

ok, so me perdi no construtor da classe c…

seria algo do tipo ?

public C(String valorA, String valorB){

}

grato.

isso tipo assim…


public class classeC extends JFrame{

private String valorA;
private String valorB;


    //Método construtor que recebe os parâmetros e armazena nas variávies globais
    public classeC(String valorA, String valorB){

          this.valorA = valorA;
          this.valorB = valorB;

       //Aqui vc contrói o seu frame e mostra os valores...
       ...


     }




   }

}

Qualquer coisa posta o código que vc fez pra poder te ajudar…

/*

  • ExibirResultado.java
  • Created on 7 de Maio de 2008, 08:31
    */

package frame;

import javax.swing.JOptionPane;

/**
*

  • @author junio.mendonca
    */
    public class C extends javax.swing.JFrame {
    String valorA;
    String valorB;

    /** Creates new form ExibirResultado */
    public C() {
    initComponents();
    }
    public C(String valorA, String valorB){
    this.valorA = valorA;
    this.valorB = valorB;
    }

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      */
      //
      private void initComponents() {

      jButton1 = new javax.swing.JButton();
      jTextFieldj = new javax.swing.JTextField();

      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

      jButton1.setText(“jButton1”);
      jButton1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButton1ActionPerformed(evt);
      }
      });

      jTextFieldj.setText(“jTextField1”);

      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()
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jButton1)
      .addComponent(jTextFieldj, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addContainerGap(315, Short.MAX_VALUE))
      );
      layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addContainerGap()
      .addComponent(jButton1)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      .addComponent(jTextFieldj, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addContainerGap(235, Short.MAX_VALUE))
      );

      pack();
      }//

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    JOptionPane.showMessageDialog(null, this.valorA);
    }

    aqui quando executo aparece a janela vazia sem o valor digitado, na classe b eu digita o valor e depis fecho usando o dispose dentro da acao de um botao fechar q criei.[b]

    /**

    • @param args the command line arguments
      */
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
      new C().setVisible(true);
      }
      });
      }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JTextField jTextFieldj;
    // End of variables declaration

}

Ok…

Obs1 - vc tem que adicionar o método initComponents(); nos dois construtores…


package frame;

import javax.swing.JOptionPane;

/**
*
* @author junio.mendonca
*/
public class C extends javax.swing.JFrame {
String valorA;
String valorB;

/** Creates new form ExibirResultado */
public C() {
initComponents();
}
public C(String valorA, String valorB){
this.valorA = valorA;
this.valorB = valorB;
initComponentes(); //// Aqui está o método para inicializar a tela
}

Obs2 - o método main vai ficar em qual classe ? Vai ficar na classe A?

quando vc inicializar a classe C tem que inicializar pelo construtor que receba argumentos,… tipo

new C(valorA, valorB).setVisible(true);

Obs3 - Você vai executar a classe de entrada de dados (B) antes da classe C certo?

Ou sua aplicação vai ter somente esta classse que vc postou?

eu tenho classe a = quem chama a classe b e classe c

a classe b recebe os dados

e a clase c, vai mostrar os dados digitados

e tenho um main

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package frame;

/**
*

  • @author junio.mendonca
    */
    public class Main {

    /**

    • @param args the command line arguments
      */
      public static void main(String[] args) {
      new A().setVisible(true);
      }

}

eu digito na classe b, fecho o frame usando dispose() e chamo a classe c… ao dar a mensagem do valor digitado esta vindo em branco agora…parece q não pego a digitação.

vou postar o codigo da classe a e b

/*

  • A.java
  • Created on 9 de Maio de 2008, 10:13
    */
    package frame;

/**
*

  • @author junio.mendonca
    */
    public class A extends javax.swing.JFrame {

    /** Creates new form A */
    public A() {
    initComponents();
    }

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      */
      //
      private void initComponents() {

      jPanel1 = new javax.swing.JPanel();
      jButton1 = new javax.swing.JButton();
      jButton2 = new javax.swing.JButton();
      jButton3 = new javax.swing.JButton();

      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

      jButton1.setText(“Chama B”);
      jButton1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButton1ActionPerformed(evt);
      }
      });

      jButton2.setText(“Chama C”);
      jButton2.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButton2ActionPerformed(evt);
      }
      });

      jButton3.setText(“jButton3”);
      jButton3.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButton3ActionPerformed(evt);
      }
      });

      javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
      jPanel1.setLayout(jPanel1Layout);
      jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addGap(24, 24, 24)
      .addComponent(jButton1)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 135, Short.MAX_VALUE)
      .addComponent(jButton2)
      .addGap(35, 35, 35))
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addGap(137, 137, 137)
      .addComponent(jButton3)
      .addContainerGap(136, Short.MAX_VALUE))
      );
      jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addGap(32, 32, 32)
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(jButton1)
      .addComponent(jButton2))
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 34, Short.MAX_VALUE)
      .addComponent(jButton3))
      );

      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(42, Short.MAX_VALUE))
      );
      layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addContainerGap(188, Short.MAX_VALUE))
      );

      pack();
      }//
      B b = new B();
      C c = new C(b.getValorA(), b.getValorB());

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // B b = new B();
    b.setVisible(true);
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    //C c = new C(b.getValorA(), b.getValorB());
    c.setVisible(true);
    }

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
    System.exit(0);
    }

    /**

    • @param args the command line arguments
      */
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {

       public void run() {
           new A().setVisible(true);
       }
      

      });
      }
      // Variables declaration - do not modify
      private javax.swing.JButton jButton1;
      private javax.swing.JButton jButton2;
      private javax.swing.JButton jButton3;
      private javax.swing.JPanel jPanel1;
      // End of variables declaration
      }

/*

  • EntradaDeDados.java
  • Created on 7 de Maio de 2008, 08:30
    */
    package frame;

/**
*

  • @author junio.mendonca
    */
    public class B extends javax.swing.JFrame {

    /** Creates new form EntradaDeDados */
    public B() {
    initComponents();
    }

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      */
      //
      private void initComponents() {

      jPanel1 = new javax.swing.JPanel();
      jButton1 = new javax.swing.JButton();
      jTextFieldA = new javax.swing.JTextField();
      jTextFieldB = new javax.swing.JTextField();

      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

      jButton1.setText(“jButton1”);
      jButton1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButton1ActionPerformed(evt);
      }
      });

      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()
      .addComponent(jButton1)
      .addContainerGap(315, Short.MAX_VALUE))
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addGap(20, 20, 20)
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
      .addComponent(jTextFieldB, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 91, Short.MAX_VALUE)
      .addComponent(jTextFieldA, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 91, Short.MAX_VALUE))
      .addGap(289, 289, 289))
      );
      jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addContainerGap()
      .addComponent(jTextFieldA, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(jTextFieldB, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addGap(41, 41, 41)
      .addComponent(jButton1)
      .addContainerGap(146, Short.MAX_VALUE))
      );

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      getContentPane().setLayout(layout);
      layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      );
      layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      );

      pack();
      }//

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    dispose();
    }

    public String getValorA(){
    return jTextFieldA.getText();
    }
    public String getValorB() {
    return jTextFieldB.getText();
    }

    /**

    • @param args the command line arguments
      */
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {

       public void run() {
           new B().setVisible(true);
       }
      

      });
      }
      // Variables declaration - do not modify
      private javax.swing.JButton jButton1;
      private javax.swing.JPanel jPanel1;
      private javax.swing.JTextField jTextFieldA;
      private javax.swing.JTextField jTextFieldB;
      // End of variables declaration
      }

Desculpe a demora…tava cheio de coisas, mas pelo que vi… na sua idéia, na parte do código




// </editor-fold>
B b = new B();

C c = new C(b.getValorA(), b.getValorB());

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// B b = new B();
b.setVisible(true);
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
//C c = new C(b.getValorA(), b.getValorB());
c.setVisible(true);
} 

na linha que inicializa a classe C não pode ficar logo abaixo da linha que inicializa o B, tem que ficar dentro da ação do botão que chama o c.setVisible daí dá certo tipo assim como está no código abaixo

/ </editor-fold>
B b = new B();
C c = null;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

b.setVisible(true);
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
c = new C(b.getValorA(), b.getValorB());
c.setVisible(true);
} 

Daí quando vc digitar o valor no B e depois abrir o C dá certo

isso mesmo…foi joia agora…muito obrigado e desculpe pelo trabalho.