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...
}
}
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…
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…
A partir do momento em que você instancia algo, você automaticamente está criando um novo objeto e consequentemente seus atributos estarão todos nulos.
[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]
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
[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]
é 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?
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.
[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…