JFrame

17 respostas
Sued

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 ?

17 Respostas

L

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…

Sued

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.

L

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...

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


}
Sued

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.

L

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?

Sued

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.

L

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

Sued

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

L

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…

Sued

ok, so me perdi no construtor da classe c…

seria algo do tipo ?

public C(String valorA, String valorB){

}

grato.

L

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...
       ...


     }




   }

}
L

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

Sued

/*

  • 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
    

}

L

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?

Sued

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
      
      }
      
L

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

Sued

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

Criado 6 de maio de 2008
Ultima resposta 15 de mai. de 2008
Respostas 17
Participantes 2