Prezados, Bom dia.
Sou iniciante em Java e também aqui no fórum, gostaria de um auxílio para esclarecimento de uma dúvida.
Estou desenvolvendo um programa que converte arquivo .jrprint para .pdf. A parte da conversão do arquivo está uma beleza.
jasper = (JasperPrint) JRLoader.loadObject(?Diretorio_nomearquivo.jrprint?);
JasperExportManager.exportReportToPdfFile(jasper, " Diretorio_nomearquivo.pdf");
Tenho uma outra classe responsável pela interface gráfica que contem dois JFileChooser, um para selecionar o arquivo que pretendo converter(.jrprint) e outro para selecionar o diretório que desejo salvar o arquivo .pdf convertido.
A minha dúvida é a seguinte, como vou pegar o valor dos JtextField e passar como parâmetro para a classe responsável pela conversão para converter o arquivo selecionado e salvar no diretório selecionado.
O JFileChooser possui dois métodos que você pode usar, o getSelectedFile, que retorna apenas um arquivo selecionado e o getSelectedFiles que retorna um array de Files.
Você pode utilizar o seguinte código para pegar o endereço de um diretório:
JFileChooser jfc=new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if(jfc.showOpenDialog(null)==JFileChooser.APPROVE_OPTION){
String pasta=jfc.getSelectedFile().getAbsoluteFile().toString();
System.out.println(pasta);
}
Para pegar o endereço de um arquivo basta alterar JFileChooser.DIRECTORIES_ONLY para JFileChooser.FILES_ONLY
Clerius,
Muito obrigado, irei testar aqui e em seguida posto o resultado.
Boa Tarde,
Ainda estou com uma dúvida.
Como faço para passar o valor do JTextField do arquivo selecionado e diretório, para as variaveis da classe responsável pela conversão.
Segue classe que converterá o arquivo.
public class Conversor{
private JasperPrint jasper;
private String nome;
private String dir;
public void Conversor(){
try{
jasper = (JasperPrint) JRLoader.loadObject(nome);
JasperExportManager.exportReportToPdfFile(jasper, dir);
} catch(JRException e){
System.out.println(e);
}
}
}
Passar o valor dos txtEntrada(arquivo a ser convertido) e txtSaida(Diretório) para as variaveis nome e dir da classe acima.
Obrigado
Você pode passar os valores pelo método construtor da classe conversor, ou criando os métodos “setNome” e “setDir” e um método para executar a conversão.
Bom dia,
Ainda estou com um problema para passar os valores das variaveis entre as classes.
O código do método do evento.
public void actionPerformed(ActionEvent e) {
String nome = txtEntrada.getText();
String dir = txtSaida.getText();
GetXSet c = new GetXSet();
c.setNome(nome);
c.setDir(dir);
}
A classe contendo os getters e setters.
package br.com.lnd.converter.controler;
public class GetXSet {
private String nome;
private String dir;
public void setNome(String entr) {
this.nome = entr;
}
public String getNome(){
return nome;
}
public void setDir(String saida) {
this.dir = saida;
}
public String getDir(){
return dir;
}
}
A classe que será responsavel por converter o arquivo.
public class Conversor{
private JasperPrint jasper;
private GetXSet nome;
private GetXSet dir;
public Conversor(){
try{
jasper = (JasperPrint) JRLoader.loadObject(nome);
JasperExportManager.exportReportToPdfFile(jasper, dir);
} catch(JRException e){
System.out.println(e);
}
}
}
O problema é que na classe que contém o código para converter as variáveis estão como null.
Se alguém poder me ajudar fico agradecido.
Em que lugar está a passagem do objeto
GetXSet c = new GetXSet();
c.setNome(nome);
c.setDir(dir);
para a classe que converte as variáveis?
Eu imagino que seja assim!?
private GetXSet nome;
private GetXSet dir;
[quote=nicocelli]Eu imagino que seja assim!?
private GetXSet nome;
private GetXSet dir;
[/quote]
Isso, para mim, é instanciar.
Por exemplo
public class EnviaParametro{
String a = "Parametro";
RecebeParametro rp = new RecebeParametro();
public void sendParameter(){
rp.recebe(a);
}
}
public class RecebeParametro{
String recebida;
public void recebe(String a){
this.recebida = a;
System.out.println(recebida);
}
}
Entendeu?