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…
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
leopoldof
Bom...Vamos as questões
//1) - pegar os valores dos textFieldStringvalorA=jTextFieldA.getText();StringvalorB=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 JFramepublicvoidsetValores(StringvalorA,StringvalorB){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
leopoldof
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
leopoldof
Então… Vc pode criar um método no frame de entrada dos valores , por exemplo…
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…
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
leopoldof
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
leopoldof
isso tipo assim…
publicclassclasseCextendsJFrame{privateStringvalorA;privateStringvalorB;//Método construtor que recebe os parâmetros e armazena nas variávies globaispublicclasseC(StringvalorA,StringvalorB){this.valorA=valorA;this.valorB=valorB;//Aqui vc contrói o seu frame e mostra os valores......}}}
L
leopoldof
Qualquer coisa posta o código que vc fez pra poder te ajudar…
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);
}
});
}
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 {
/**CreatesnewformA*/publicA(){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();
/** 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();
Desculpe a demora…tava cheio de coisas, mas pelo que vi… na sua idéia, na parte do código
// </editor-fold>Bb=newB();Cc=newC(b.getValorA(),b.getValorB());privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){// B b = new B();b.setVisible(true);}privatevoidjButton2ActionPerformed(java.awt.event.ActionEventevt){//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.