Você está na página 1de 20

Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 1

Como gerar arquivos PDF


Neste tutorial, você vai aprender a gerar arquivos PDF a partir de aplicativos Java utilizando a biblioteca iText.

Mais uma camada será introduzida ao desenho do nosso software: a camada base. Nessa camada, costumam
ficar os serviços técnicos de mais baixo nível de um aplicativo, como, por exemplo, gerenciamento de
servidores, de envio de e-mails, de registro e recuperação de logs, de E/S de rede e de geração de
arquivos/relatórios.

Conteúdo
• Obtendo e adicionando a biblioteca iText
o Como obter a biblioteca iText
o Como adicionar a biblioteca iText ao projeto
• Implementando a camada Base
o Como criar a classe GeradorDeCabecalhoRodape
o Como criar a classe GeradorDeArquivoPDF
o Como criar a interface IGeradorDeArquivoPDF
o Como criar a classe FactoryDeServicos
o Como criar a interface IFactoryDeServicos
• Implementando a camada Util
o Como criar a classe ArquivoUtil
• Alteração na camada Modelo
o Como criar a classe ControleArquivo
• Alteração na camada Visão
o Como criar a classe GUIRelatorioDeSocio
o Como criar a classe OuvinteDeGUIRelatorio
o Alterações na classe GUIPrincipal

Obtendo e adicionando a biblioteca iText

Como obter a biblioteca iText

1. Acesse o endereço http://sourceforge.net/projects/itext/ e faça o download da versão mais recente


do iText (A versão mais atual na data deste tutorial era a 5.0.2, arquivo iText-5.0.2.jar);

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados


Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 2

2. Copie-a para o diretório lib do JDK que está usando, por exemplo, C:\Program
Files\Java\jdk1.6.0_18\lib;
3. No NetBeans, clique no menu Ferramentas e, em seguida, em Bibliotecas;
É aberto o Gerenciador de Bibliotecas.
4. Clique em Nova biblioteca.
5. Em Nome da biblioteca, digite iText e clique em OK.
Entre as bibliotecas de classe, aparece agora iText.

6. Clique em Adicionar JAR/pasta.


7. Localize e selecione o arquivo jar do iText baixado e, em seguida, clique em Adicionar JAR/pasta.
©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados
Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 3

Como adicionar a biblioteca iText ao projeto

1. No projeto, clique com o botão direito sobre Bibliotecas e, em seguida, clique em Adicionar
biblioteca.
2. Selecione a biblioteca iText e clique em Adicionar biblioteca.

Implementando a camada Base

Como criar a classe GeradorDeCabecalhoRodape

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados


Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 4

1. Clique com o botão direito sobre o pacote net.antoniopassos.dukeclube, aponte para Novo e clique
em Classe Java.
É exibido o assistente para criar classe.
1. Em Nome da classe, digite GeradorDeCabecalhoRodape. Em pacote, acrescente .base.arquivo.impl.
2. Clique em Finalizar.
A classe GeradorDeRelatorios é criada, e seu código-fonte é exibido.
3. Faça a classe herdar de PdfPageEventHelper. Para tanto, ao lado do nome da classe, inclua extends
PdfPageEventHelper.
4. Corrija a importação.
5. Declare as seguintes variáveis:
protected Paragraph cabecalho;
protected PdfPTable rodape;

6. Corrija as importações.

7. Implemente o método abaixo.


public GeradorDeCabecalhoRodape(String textoDoCabecalho) {
cabecalho = new Paragraph(textoDoCabecalho);

rodape = new PdfPTable(3);


rodape.setTotalWidth(580);
rodape.addCell(new Phrase(new Chunk("Copyright © 2009 Antonio Passos")));
rodape.addCell(new Phrase(new Chunk("http://ead.antoniopassos.net")));
rodape.addCell(new Phrase(new Chunk("Todos os direitos reservados")));
}

Esse método configura o cabeçalho do relatório como sendo um parágrafo cujo texto é a string passada
como argumento e o rodapé como uma tabela de 3 colunas, cujas células exibem os créditos do DADP.

8. Corrija as importações.

9. Implemente o método abaixo.


public void onEndPage(PdfWriter writer, Document document) {
PdfContentByte cb = writer.getDirectContent();
ColumnText.showTextAligned(cb, Element.ALIGN_CENTER, cabecalho,
(document.right() - document.left()) / 2 + 78,
document.top() + 10, 0);
rodape.writeSelectedRows(0, -1,
(document.right() - document.left()) / 6 + 30,
document.bottom() - 10, cb);
}

Esse método é chamado assim que a página é concluída.

10. Corrija as importações.

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados


Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 5

Como criar a classe GeradorDeArquivoPDF

1. Clique com o botão direito sobre o pacote net.antoniopassos.dukeclube.base.arquivo.impl, aponte


para Novo e clique em Classe Java.
2. Em Nome da classe, digite GeradorDeArquivoPDF.
3. Clique em Finalizar.
4. Declare as seguintes variáveis:
private Document relatorio;
private File arquivoPDF;

5. Corrija as importações.

6. Implemente o seguinte construtor:


public GeradorDeArquivoPDF(File arquivo) {
this.arquivoPDF = arquivo;
}

7. Implemente o seguinte método:


public void gerarRelatorioDeSocios(List socios) throws DukeClubeException {
this.criarRelatorio(this.arquivoPDF.getAbsolutePath());
this.configurarPropriedades();

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados


Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 6

PdfPTable tabelaDeSocios = this.criarTabela();


this.configurarCabecalhoDaTabela(tabelaDeSocios);
this.adicionarLinhas(tabelaDeSocios, socios);

relatorio.close();
}

Esse método chama os métodos implementados abaixo para gerar o relatório.


8. Implemente o seguinte método:
private void criarRelatorio(String arquivo) throws DukeClubeException {
this.relatorio = new Document();
relatorio.setPageSize(PageSize.A4.rotate());
relatorio.setMargins(72, 72, 72, 72);

try {
PdfWriter writer = PdfWriter.getInstance(relatorio, new
FileOutputStream(arquivo));
writer.setPageEvent(new GeradorDeCabecalhoRodape("DukeClube - Relatório de
Sócios"));

} catch (FileNotFoundException ex) {


StringBuffer mensagem = new StringBuffer("Não foi possível gerar o
relatório.");
mensagem.append("\nMotivo: " + ex.getMessage());
throw new DukeClubeException(mensagem.toString());
} catch (DocumentException ex) {
StringBuffer mensagem = new StringBuffer("Não foi possível gerar o
relatório.");
mensagem.append("\nMotivo: " + ex.getMessage());
throw new DukeClubeException(mensagem.toString());
}
}

Esse método cria o arquivo PDF. Note como são configurados o tamanho da página para A4, a orientação
para paisagem e as margens para 72.
9. Implemente o seguinte método.
private void configurarPropriedades() {
relatorio.addTitle("DukeClube - Relatório de Sócios");
relatorio.addSubject("Relatório de sócios");
relatorio.addKeywords("DukeClube, iText, DADP");
relatorio.addCreator("iText 5.0.2");
relatorio.addAuthor("Prof. Antonio Passos");
relatorio.addHeader("Expires", "0");
}

Esse método configura as propriedades do arquivo PDF.

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados


Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 7

10. Implemente o seguinte método:


private PdfPTable criarTabela() {
this.relatorio.open();
PdfPTable tabelaDeSocios = new PdfPTable(7);
tabelaDeSocios.setWidthPercentage(100);

return tabelaDeSocios;
}

Esse método cria a tabela, cujas linhas corresponderão aos registros dos sócios.
11. Implemente o seguinte método.
private void configurarCabecalhoDaTabela(PdfPTable tabela) {
tabela.setHeaderRows(1);

String[] linhaDeCabecalho = new String[]{"Nome", "Sexo", "Data de nascimento",


"Categoria", "E-mail", "Telefone fixo", "Telefone celular"};
for (String cabecalho : linhaDeCabecalho) {
PdfPCell celulaDeCabecalho = new PdfPCell(new Paragraph(cabecalho));
celulaDeCabecalho.setGrayFill(0.7f);
tabela.addCell(celulaDeCabecalho);
}
}

Esse método configura o cabeçalho da tabela criada no passo anterior com os atributos dos sócios.
12. Implemente o seguinte método:

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados


Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 8

private void adicionarLinhas(PdfPTable tabela, List socios) throws DukeClubeException


{
Iterator iterator = socios.iterator();
while (iterator.hasNext()) {
Socio socio = (Socio) iterator.next();
tabela.addCell(socio.getNome());
for (Sexo sexo : Sexo.values()) {
if (sexo.ordinal() == socio.getSexo()) {
tabela.addCell(sexo.toString());
}
}
SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
Date data = socio.getDataNascimento();
tabela.addCell(formatoData.format(data));
for (CategoriaDeSocio categoria : CategoriaDeSocio.values()) {
if (categoria.ordinal() == socio.getCategoria()) {
tabela.addCell(categoria.toString());
}
}
tabela.addCell(socio.getEmail());
tabela.addCell(socio.getTelefoneFixo());
tabela.addCell(socio.getTelefoneCelular());
}
try {
relatorio.add(tabela);
} catch (DocumentException exc) {
StringBuffer mensagem = new StringBuffer("Não foi possível gerar o
relatório.");
mensagem.append("\nMotivo: " + exc.getMessage());
throw new DukeClubeException(mensagem.toString());
}
}

Esse método adiciona linhas à tabela, cada uma correspondendo a um registro de sócio.

1. Corrija as importações.

Como criar a interface IGeradorDeArquivoPDF

1. Clique com o botão direito sobre o pacote a classe GeradorDeArquivoPDF, aponte para Refatorar e
clique em Extrair interface.
2. Na janela Extrair interface, digite IGeradorDeArquivoPDF em Nome da interface, marque a caixa
gerarRelatorioDeSocio e clique em Refatorar.

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados


Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 9

A interface é criada.
3. Clique com o botão direito sobre a interface, aponte para Refatorar e clique em Mover.
4. Na janela Mover classe que é aberta, em Para pacote, apague .impl e clique em Refatorar.

Como criar a classe FactoryDeServicos

1. Clique com o botão direito sobre o pacote net.antoniopassos.dukeclube.base.arquivo, aponte para


Novo e clique em Classe Java.
2. Em Nome da classe, digite FactoryDeServicos e, em Pacote, apague .arquivo.
3. Clique em Finalizar.
4. Implemente o seguinte método:
public IGeradorDeArquivoPDF getGeradorDeRelatorios(File arquivo) {

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados


Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 10

return new GeradorDeArquivoPDF(arquivo);


}

5. Corrija as importações.

Como criar a interface IFactoryDeServicos

1. Clique com o botão direito sobre a classe FactoryDeServicos, aponte para Refatorar e clique em
Extrair interface.

2. Na janela aberta, digite IFactoryDeServicos em Nome da interface, marque a caixa correspondente


ao método getGeradorDeRelatorios e clique em Refatorar.

Implementando a camada Util

Como criar a classe ArquivoUtil

1. Clique com o botão direito sobre o pacote net.antoniopassos.dukeclube, aponte para Novo e clique
em Nova classe.
2. Em Nome da classe, digite ArquivoUtil. Em Pacote, acrescente .util e clique em Finalizar.
3. Implemente o seguinte método:
public static boolean isExtensaoIgualA(File arquivo, String extensao) {
int posicaoDoPonto = arquivo.getAbsolutePath().lastIndexOf(".");
if (posicaoDoPonto < 0) {
return false;
}

String extensaoDoArquivo = arquivo.getAbsolutePath().substring(posicaoDoPonto);

if (extensaoDoArquivo.toLowerCase().equals(extensao)) {
return true;
} else {
return false;
}
}

4. Corrija a importação.

Alteração na camada Modelo

Como criar a classe ControleArquivo

1. Clique com o botão direito sobre o pacote net.antoniopassos.dukeclube.modelo.controle, aponte


para Novo e clique em Classe Java.
2. Em Nome da classe, digite ControleArquivo e clique em Finalizar.
3. Implemente o seguinte método:
public void gerarRelatorioDeSocios(List socios, File arquivo) throws
DukeClubeException {
IFactoryDeServicos fabricaDeServicos = new FactoryDeServicos();

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados


Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 11

IGeradorDeArquivoPDF geradorDeRelatorios =
fabricaDeServicos.getGeradorDeRelatorios(arquivo);
geradorDeRelatorios.gerarRelatorioDeSocios(socios);
}

4. Corrija as importações.

Alterações na camada Visão

Como criar a classe GUIRelatorioDeSocio

1. Clique com o botão direito sobre o pacote net.antoniopassos.dukeclube.visao.gui, aponte para Novo
e clique em Formulário JInternalFrame.
2. Em Nome da classe, digite GUIRelatorioDeSocio.
3. Clique em Finalizar.
A janela GUIRelatorioDeSocio é criada e aberta no editor (visão projeto).
4. Na janela Inspetor, clique com o botão direito em JInternalFrame e, no menu pop-up, clique em
Propriedades.
5. A janela Propriedades é exibida.
6. No alto da janela, selecione Propriedades .
7. Marque a caixa de seleção closable.
8. Em title, digite DukeClube - Relatório de Sócios.
9. Clique em Fechar.
10. Adicione um painel(JPanel) e mude seu nome para pCriteriosDePesquisa.
©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados
Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 12

11. Em Propriedades, clique no botão de reticências (...) de border.

12. Em Bordas disponíveis, selecione Borda de linha e clique em Ok.


13. Adicione um grupo de botões (ButtonGroup) e mude seu nome para bgCategoriasDeSocios.

14. Adicione um botão de opção(JRadioButton) ao painel, mude seu texto para Todos os sócios e seu
nome para rbSociosTodos.
15. Marque a caixa de seleção da propriedade selected.

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados


Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 13

16. Para a propriedade buttonGroup, selecione bgCategoriasDeSocio.

17. Adicione outro botão de opção, mude seu texto para Apenas os sócios... e seu nome para
rbSociosEspecificos.
18. Para a propriedade buttonGroup, selecione bgCategoriasDeSocio.
19. Adicione uma caixa de seleção (JCheckBox), mude seu texto para Titulares e seu nome para
cbTitulares.
20. Em Propriedades, desmarque a caixa enabled.

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados


Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 14

21. Adicione outra caixa de seleção (JCheckBox), mude seu texto para Remidos e seu nome para
cbRemidos.
22. Em Propriedades, desmarque a caixa enabled.
23. Adicione mais uma caixa de seleção (JCheckBox), mude seu texto para Beneméritos e seu nome para
cbBenemeritos.
24. Em Propriedades, desmarque a caixa enabled.
25. Sob o painel, adicione um rótulo, mude seu texto para Arquivo .PDF e seu nome lArquivoPDF.
26. Sob o rótulo, adicione um campo de texto(JTextField), apague seu texto e mude seu nome para
tfArquivoPDF.
27. Em Propriedades, desmarque a caixa editable.

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados


Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 15

28. Ao lado do campo de texto, adicione um botão (JButton), mude seu texto para Selecionar... e seu
nome para bSelecionar.
29. Sob o campo de texto e o botão, adicione um separador(JSeparator).

30. Sob o separador, adicione um botão, mude seu texto para Gerar relatório e seu nome para
bGerarRelatorio.
31. Em Propriedades, desmarque a caixa de seleção da propriedade enabled.

32. Na janela Inspetor, clique com o botão direito sobre Outros componentes, aponte para Adicionar da
paleta, aponte para Janelas Swing e clique em Selecionador de arquivos (JFileChooser) .

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados


Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 16

33. Mude o nome do selecionador de arquivos para fcSelecionadorDeArquivo.


34. Acesse o código-fonte.
35. Declare a seguinte variável de instância:
private File arquivo;

36. Corrija a importação.


37. Implemente o método abaixo.
public void setPosicao() {
Dimension d = this.getDesktopPane().getSize();
this.setLocation((d.width - this.getSize().width) / 2,
(d.height - this.getSize().height) / 2);
}

Esse método posiciona a janela no centro da janela principal.


38. Corrija a importação.
39. Implemente o método abaixo.
public void bGerarRelatorioAddActionListener(ActionListener ouvinte) {
bGerarRelatorio.addActionListener(ouvinte);
}

Esse método adiciona um ouvinte (listener) ao botão bGerarRelatorio.


40. Implemente os métodos abaixo.
public boolean isSelectedRbSociosTodos() {
return rbSociosTodos.isSelected();
}

public boolean isSelectecRbSociosEspecificos() {


return rbSociosEspecificos.isSelected();
}

public boolean isSelectedCbTitulares() {


return cbTitulares.isSelected();
}

public boolean isSelectedCbRemidos() {


return cbRemidos.isSelected();
}

public boolean isSelectedCbBenemeritos() {


©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados
Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 17

return cbBenemeritos.isSelected();
}

Esses métodos retornam true se o botão de opção (ou caixa de seleção) correspondente estiver
selecionado. Caso contrário, retorna false.
41. Implemente o método abaixo.
public File getArquivo() {
return this.arquivoPDF;
}

Esse método retorna o arquivo PDF informado pelo usuário.


42. Corrija as importações.
43. Volte à visão Projeto.
44. Dê um duplo clique no botão de opção Todos os sócios.
45. Substitua o comentário do método exibido pelas instruções abaixo.
cbTitulares.setEnabled(false);
cbRemidos.setEnabled(false);
cbBenemeritos.setEnabled(false);

cbTitulares.setSelected(false);
cbRemidos.setSelected(false);
cbBenemeritos.setSelected(false);

46. Volte à visão Projeto.


47. Dê um duplo clique no botão de opção Apenas os sócios.
48. Substitua o comentário do método exibido pelas instruções abaixo.
cbTitulares.setEnabled(true);
cbRemidos.setEnabled(true);
cbBenemeritos.setEnabled(true);

49. Volte à visão Projeto.


50. Dê um duplo clique no botão Selecionar.
51. Substitua o comentário do método exibido pelas instruções abaixo.
fcSelecionadorDeArquivo = new JFileChooser();
if (fcSelecionadorDeArquivo.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
arquivoPDF = fcSelecionadorDeArquivo.getSelectedFile();
tfArquivoPDF.setText(arquivoPDF.getAbsolutePath());
bGerarRelatorio.setEnabled(true);
}

Essas instruções criam e exibem uma instância de JFileChooser com que o usuário selecionará o diretório
e o nome do arquivo PDF a ser gerado.
52. Corrija as importações.

Como criar a classe OuvinteDeGUIRelatorioDeSocio

1. Clique com o botão direito sobre o pacote net.antoniopassos.dukeclube.visao.ouvinte, aponte para


Novo e clique em Classe Java.
2. Em Nome da classe, digite OuvinteDeGUIRelatorioDeSocio.
©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados
Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 18

3. Clique em Finalizar.
4. Declare a seguinte variável:
private GUIRelatorioDeSocio guiRelatorio;

5. Corrija a importação.
6. Implemente o seguinte método:
private void gerarRelatorioDeSocios() {
ControleSocio controleSocio = new ControleSocio();
if (guiRelatorio.isSelectecRbSociosEspecificos()) {
if (guiRelatorio.isSelectedCbTitulares()) {
controleSocio.adicionarCriterioDePesquisaIgualA("categoria",
CategoriaDeSocio.Titular.ordinal());
}
if (guiRelatorio.isSelectedCbRemidos()) {
controleSocio.adicionarCriterioDePesquisaIgualA("categoria",
CategoriaDeSocio.Remido.ordinal());
}
if (guiRelatorio.isSelectedCbBenemeritos()) {
controleSocio.adicionarCriterioDePesquisaIgualA("categoria",
CategoriaDeSocio.Benemérito.ordinal());
}
}
try {
List socios = controleSocio.realizarPesquisa();
if (socios.size() > 0) {
ControleArquivo controleArquivo = new ControleArquivo();
File arquivo = guiRelatorio.getArquivo();
if (!ArquivoUtil.isExtensaoIgualA(arquivo, ".pdf")) {
arquivo = new File(arquivo.getAbsolutePath() + ".pdf");
}
controleArquivo.gerarRelatorioDeSocios(socios, arquivo);
} else {
throw new DukeClubeException("Não há sócios cadastrados!!!");
}
} catch (DukeClubeException ex) {
GUIMensagem.exibirMensagem(ex.getMessage(), "DukeClube - Relatório", true);
}
}

7. Implemente a seguinte classe interna:


class OuvinteGerarRelatorio implements ActionListener {

public void actionPerformed(ActionEvent e) {


gerarRelatorioDeSocios();
}
}

8. Corrija as importações.
9. Implemente o seguinte construtor:
public OuvinteDeGUIRelatorioDeSocio(GUIRelatorioDeSocio guiRelatorio) {
this.guiRelatorio = guiRelatorio;
this.guiRelatorio.bGerarRelatorioAddActionListener(new OuvinteGerarRelatorio());
}

Alterações na classe GUIPrincipal

1. Declare a seguinte variável:


private GUIRelatorioDeSocio guiRelatorioDeSocios;
©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados
Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 19

2. Na janela Inspetor, clique com o botão direito sobre o item de menu itemDeMenuRelatorioDeSocio,
aponte para Eventos, aponte para Action e, em seguida, clique em actionPerformed.
3. No corpo do método exibido, substitua o comentário pelas instruções:
if ((guiRelatorioDeSocios == null) || (!guiRelatorioDeSocios.isVisible())) {
guiRelatorioDeSocios = new GUIRelatorioDeSocio();
OuvinteDeGUIRelatorioDeSocio ouvinte = new
OuvinteDeGUIRelatorioDeSocio(guiRelatorioDeSocios);
desktopPane.add(guiRelatorioDeSocios);
guiRelatorioDeSocios.setPosicao();
guiRelatorioDeSocios.setVisible(true);
}
try {
guiRelatorioDeSocios.setSelected(true);
} catch (PropertyVetoException exc) {
StringBuffer mensagem = new StringBuffer();
mensagem.append("Não foi possível selecionar a janela Relatório de Sócio!");
mensagem.append("\nMotivo: " + exc.getMessage());
GUIMensagem.exibirMensagem(mensagem.toString(), "DukeClube - Relatório de Sócio",
true);
}

4. Corrija a importação.

Testando o aplicativo

1. Levante o servidor de banco de dados H2, caso não o tenha feito ainda.

2. Execute o aplicativo.

3. Clique no menu Relatório e, em seguida, clique no item de menu Sócio.

É aberta a janela Relatório de Sócios.

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados


Desenvolvimento de Aplicativos Desktop em Java Utilizando Padrões 20

4. Clique no botão Selecionar.

É exibido o seletor de arquivos.

5. Selecione um diretório (Por exemplo, C:\Temp), dê um nome ao arquivo (Por exemplo,DukeClube –


Relatório de Sócios) e clique em Save.

6. Em seguida, clique no botão Gerar relatório.

O relatório de sócios é gerado.

7. Acesse o diretório onde foi gerado o arquivo e abra-o com um leitor de PDF.

8. Prossiga a geração de relatórios, mas agora selecionando categoria(s) específica(s) de sócio.

9. Encerre o aplicativo.

©2009 Antonio Passos | http://www.antoniopassos.com.br/ead | Todos os direitos reservados

Você também pode gostar