[RESOLVIDO]Pegar valor do JTextfield de um JFrame apartir de uma classe separada

Olá pessoal,

seguinte

tenho esse formulário que tem essa classe:

public class AlterarCurriculum extends javax.swing.JFrame { public int peg(){ int n; n = Integer.parseInt(codigo.getText()); return n; } }

e eu não estou conseguindo acessar nenhum campo desse formulario por outra classe:

exemplo

public class re1{

public JasperPrint gerar(){

AlterarCurriculum formu = new AlterarCurriculum();
formu. //dai não ta vindo nenhum método do formulário...

}
}

Verifique se o import está correto, referenciando a classe AlterarCurriculum e não JFrame.

Muito obrigado por responder mas não seria necessário dar o import porque as classes estão dentro do mesmo pacote, e o AlterarCurriculum é o nome da classe…

Ok, você poderia postar o código completo das 2 classes?

Consegui resolver tive que criar outro método public para que ele pudesse reconhecer,
pois o JFrame deixa todos os metodos como private, dai não tem como acessar; obrigado por tudo.

Amigos, bom dia, eu consegui chamar um método public que criei na classe do JFrame, e tmb já defini tudo como public, só que não está vindo nada, o método só mim da o retorno se eu executar dentro da classe que ele está, na classe em que eu chamo ele como parametro não vem nada… já tentei de tudo ta tudo certo só que não vem nada…

Alguem ajuda ae pessoal toda dica é bem vinda :idea:

Oi,

A partir do momento em que você instancia algo, você automaticamente está criando um novo objeto e consequentemente seus atributos estarão todos nulos.

Tchauzin!

está desta forma>>>

classe em que está o método:::

[code]
public class AlterarCurriculum extends javax.swing.JFrame {

public String pegar(){
   String n;
    n = codigo.getText();

return n;
}}

// classe dentro do mesmo pacote que chama o método:::

public JasperPrint gerarCodigo(){
JasperPrint rel = null;
try {
Connection con = ConexaoOracle.getConnection();
HashMap map = new HashMap();

		String arquivoJasper = "src/formularios/codigo.jasper";
                    AlterarCurriculum novo = new AlterarCurriculum();
                    
                       map.put("codig",novo.pegar());// AQUI EU CHAMO O MÉTODO QUE MIM DEVERIA VIR COM O MEU CODIGO
              
		rel = JasperFillManager.fillReport(arquivoJasper, map, con);
	} catch (JRException e) {
		JOptionPane.showMessageDialog(null,e.getMessage());
	}
	return rel;
}[/code]

ho lina brigadãoo, só que quando ele for rodar o método ele num vai pegar os valores do meu campo??

Oi,

Tá e me diz onde você está alimentando esse código?

Foi o que eu disse anteriormente, você instanciou o objeto (new) e quis usa-lo em seguida. Não tem sentido algum.

AlterarCurriculum novo = new AlterarCurriculum(); // Criando um novo objeto zerado. map.put("codig",novo.pegar());// AQUI EU CHAMO O MÉTODO QUE MIM DEVERIA VIR COM O MEU CODIGO

Tchauzin!

É vc ta certíssima rs,
mas olha só to tendo esse probleminha aqui:::

[code]
AlterarCurriculum novo = null;//tem um outro jeito de inicializar essa variável?

           String n = novo.pegar();
                    
                       map.put("codig",n);[/code]

grato gratooo

[quote=Oesly]É vc ta certíssima rs,
mas olha só to tendo esse probleminha aqui:::

[code]
AlterarCurriculum novo = null;//tem um outro jeito de inicializar essa variável?

           String n = novo.pegar();
                    
                       map.put("codig",n);[/code]

grato gratooo[/quote]

Oi,

Não. Não tem como. O correto é instancia-la mesmo.

O que está errado no seu código, é que em nenhum momento você está alimentando o código que você quer pegar. Exemplo:

[code]public class AlterarCurriculum extends javax.swing.JFrame {

public void Alimentar(String teste){
   codigo.setText(teste);
}

public String pegar(){
   String n;
    n = codigo.getText();

return n;
}}[/code]

[code]public JasperPrint gerarCodigo(){
JasperPrint rel = null;
try {
Connection con = ConexaoOracle.getConnection();
HashMap map = new HashMap();

		String arquivoJasper = "src/formularios/codigo.jasper";
                    AlterarCurriculum novo = new AlterarCurriculum();
                    novo.Alimentar("34353637"); // Alimentando aqui, o que não faz sentido, pois isso deveria estar em outro lugar.

                    map.put("codig",novo.pegar());// pegando o código alimentado acima.
              
		rel = JasperFillManager.fillReport(arquivoJasper, map, con);
	} catch (JRException e) {
		JOptionPane.showMessageDialog(null,e.getMessage());
	}
	return rel;
}[/code]

Tchauzin!

é porque o codigo é gerado altomaticamente pelo banco de dados, o codigo é um JTextField, e ele contem um numero gerado pelo BD, dai o metodo só pega o valor para enviar para a classe que passa o parametro para o ireport; ta intendendo minha lógica?

Ajuda aew pessoal qualquer dica é bem vinda…

Oi,

Tá. Pera. Se o código é pego pelo banco de dados, seu método pegar() deveria fazer um select e buscar isso do banco, ou não?

Tchauzin!

humm, mas é que esse select é feito dentro dum evento do JCombobox ele faz o select carrega as informações na tela, e preenche o formulario, dai por um botão eu peço pra imprimir esse formulario, que vai ser ordenado pelo ID(código e atributo chave), dai passo ele como parametro usando o método GetTex para fazer a condição no select da query do Ireport e assim ele imprimir somente o formulario selecionado… é isso, muito obrigado pela atenção Deus vai te recompensar; olha ta tudo indo bem, o problema é consegui uma forma de passar o mesmo numero que é carregado no ID do formulario para a classe que gera o relatorio.

Oi,

Bom… agora só postando mais códigos para que eu tente lhe ajudar…

Tchauzin!

Olá, seguem os códigos:

Classe do Formulario

[code]
public class AlterarCurriculum extends javax.swing.JFrame {//dentro desta classe eu consigo ter o retorno deste método sem problemas

public String pegar(){// Método usado para pegar o código carregado pelo banco.
   String n;
    n = codigo.getText();

return n;
}


public class re1{//Classe separada dentro do mesmo pacote para gerar o relatório do IREPORT

public re1() {}

public JasperPrint gerarCodigo(){
JasperPrint rel = null;
try {
Connection con = ConexaoOracle.getConnection();
HashMap map = new HashMap();

		String arquivoJasper = "src/formularios/codigo.jasper";
                    
                   AlterarCurriculum novo = new AlterarCurriculum();

//novo.codigo.getText(); “tentei dessa forma tambem, mas não vem nada do jTextField”

                       map.put("codig", novo.pegar());//Obtendo o retorno do Método da classe do Formulario onde não vem nada... onde seria passado como parametro...
              
		rel = JasperFillManager.fillReport(arquivoJasper, map, con);
	}[/code]

OBs, ta tudo certinho se eu colocar um numero(para fazer o where) no lugar do parâmetro ele roda o relatório normal…

qualquer ajuda é bem vinda…