JasperViewer c/ "Ajustar a largura" [RESOLVIDO]

20 respostas
RenataFA

Oi pessoal! Estive meio “sumida” por falta de tempo… mas agora tô precisando de uma mãozinha…

Qdo visualizo meu relatório usando o JasperViewer, ele automaticamente vem na opção “Tamanho padrão”.
Eu queria que ele já viesse na opção “Ajustar a largura”

Alguém sabe como?

Já tentei:

jasperViewer.setFitWidthZoomRatio();

jasperViewer.setFitPageZoomRatio();

Já tentei forçar o ActionEvent do botãozinho de Ajustar a largura.

Enfim, não consigo! E não adianta simplesmente mudar o zoom de visualização (isso eu sei) pq o tamanho das páginas podem variar de um relatório pra outro, então o jeito seria executar o msm que ele faz qdo clicamos no botão Ajustar a largura.

Alguma idéia?

Grata, :wink:
Renata

20 Respostas

Marky.Vasconcelos

Nossa… nesse final de ano aparecem duas pessoas que estavam sumidas: voce e a lina ^^

Mas… nunca precisei disso, voce já tentou disparar a ação do botão depois do JaperViewer está visivel?

RenataFA

Oi! Então, já tentei sim… mas tb não deu certo… :cry:

Marky.Vasconcelos
void btnFitPageActionPerformed(java.awt.event.ActionEvent evt) {
if (btnFitPage.isSelected())//Se estiver selecionado
{
btnActualSize.setSelected(false);
btnFitWidth.setSelected(false);

setRealZoomRatio(((float)pnlInScroll.getVisibleRect().getHeight() - 20f) / jasperPrint.getPageHeight());
}
}//

Código retirado da classe JRViewer (O JPanel do JasperViwer)

Antes de disparar a Action do btnFitPage voce setou o selected como true?

Talvez funcione

RenataFA

BINGO!

Isso msm amigo! Agora funcionou, eu tava fazendo quase certo, faltou apenas colocar o .setSelected(true) que vc falou.

Pra ajudar ai quem precisar, ficou assim o comando:

tgbAjustarLargura.setSelected(true); tgbAjustarLargura.getActionListeners()[0].actionPerformed(new ActionEvent(tgbAjustarLargura, 0, null));
Onde tgbAjustarLargura é o nome que eu dei pro botão de Ajustar a largura.

Vlw!!! :wink:

Marky.Vasconcelos

Pra falar a verdade eu não preciso mas… agora que ta aqui acho que vou colocar nos meus relatórios.

… welcome back ^^

RenataFA

CORRIGINDO!!!

Não precisa nem acionar o listener viu? É só:

tgbAjustarLargura.setSelected(true);

Que já funciona!

Obrigada mais uma vez!

J

Opa… desculpa ressuscitar o tópico.

Vc poderia mostrar como fez isso?

RenataFA

Troféu “Coveiro de fórum” pra vc hein!

Toda explicação de como foi feito está no post. É o que tem pra ser dito. Faça como está descrito e dará certo.

Grata,
Renata

J

RenataFA:
Troféu “Coveiro de fórum” pra vc hein!

Toda explicação de como foi feito está no post. É o que tem pra ser dito. Faça como está descrito e dará certo.

Grata,
Renata

Opa… então mereço um prêmio pelo menos!!!

Na verdade estou com uma dúvida de OO acredito, não estou conseguindo chamar a ação do botão como vc fez!

o atributo da classe JasperViewer que referencia a classe JRView está como protected. Já tentei fazer umas gambiarras aqui, mas queria ver como foi que vc conseguiu chamar a ação do botão fitPage
da classe JRViewer ou como vc fez para referenciá-lo.

Se puder ajudar, fico grato.

RenataFA

É… realmente são coisas distintas…

Bom, vou te explicar o truque e vc acerta pro seu caso.

Primeiro eu chego no objeto JRViewer, assim:

final JRViewer jrViewer = (JRViewer)((JPanel)((JPanel)((JLayeredPane)((JRootPane)jasperViewer.getComponent(0)).getComponent(1)).getComponent(0)).getComponent(0)).getComponent(0);

Então eu pego o panel dos botões assim:

JPanel pnlBotoes = (JPanel)jrViewer.getComponent(0); // botões da barra superior

E ai, cada botão que quero, eu pego de acordo com o índice dele no panel, por ex o botão de salvar, eu pego assim:

JButton btnSalvar = (JButton)pnlBotoes.getComponent(0);

Louco né? Faço isso pra tudo que tem no visualizador do relatório, formato tudo, mudo ícones, textos, etc… É só vc ir pegando da forma como expliquei acima.

Boa sorte.
Renata

J

RenataFA:
É… realmente são coisas distintas…

Bom, vou te explicar o truque e vc acerta pro seu caso.

Primeiro eu chego no objeto JRViewer, assim:

final JRViewer jrViewer = (JRViewer)((JPanel)((JPanel)((JLayeredPane)((JRootPane)jasperViewer.getComponent(0)).getComponent(1)).getComponent(0)).getComponent(0)).getComponent(0);

Então eu pego o panel dos botões assim:

JPanel pnlBotoes = (JPanel)jrViewer.getComponent(0); // botões da barra superior

E ai, cada botão que quero, eu pego de acordo com o índice dele no panel, por ex o botão de salvar, eu pego assim:

JButton btnSalvar = (JButton)pnlBotoes.getComponent(0);

Louco né? Faço isso pra tudo que tem no visualizador do relatório, formato tudo, mudo ícones, textos, etc… É só vc ir pegando da forma como expliquei acima.

Boa sorte.
Renata

puts… põe louco nisso… :shock:

Vou testar amanhã e posto o resultado…
Valeu :wink:

J

RenataFA,

Valeu pela ajuda… funcionou de boa o código. :wink:

Pra falar a verdade a minha dúvida não era nem de OO, o problema estava mesmo na hora de montar essa expressão que pega o JRViewer. Não tava conseguindo fazer esse monte de getComponent().
Mas tá aí… funcionou direitinho. Muito obrigado pela ajuda.

M

.

TheKill

Só um breve comentário. Muito boa abordage feita pela RenataFA. Gostaria de deixar os Congratulations… iReport manda muito

fbarreto

que mania de ficar recussitando topicos de meses e anos atras!!! Lamentavel isso.

TheKill

Se esta sendo ressucitado é por que foi util para alguem, ou agora não é permitido fazer post em topicos antigos?
OMG, isso sim é lamentável!

Tuanny_Ramos

reabrindo o tópico, consegui fazer assim também:

Field field = jrViewer.getClass().getDeclaredField("btnFitWidth");
field.setAccessible(true);
JToggleButton btnFitWidth = (JToggleButton) field.get(jrViewer);
btnFitWidth.doClick();
Rachel_da_Silveira_C

Se esta sendo ressucitado é por que foi util para alguem, ou agora não é permitido fazer post em topicos antigos?
OMG, isso sim é lamentável!

Também não vejo problema algum em utilizar tópicos antigos.

Até faço pesquisas pelo faq do guj, pois tem pessoas que duplicam tópicos, e ainda pedem para você não duplicar tópicos e fazer a busca pelo faq , concorda TheKill?

Não vejo mal algum.

[]s

TheKill

A vantagem do uso de Forum é interessante pelo fato de vc ter arquivado Dúvidas/Problemas/Soluções para serem usadas e melhoradas sempre que houver a necessidade!

Mas é incrivel como algumas pessoas tem mal hábito de ficar fazendo spammer

andersonneto

Eu segui a orientação do Marky.Vasconcelos, e deu certo :slight_smile:

JasperViewer viewer = new JasperViewer(impressao, false); viewer.setVisible(true); //primeiro visualiza viewer.setFitPageZoomRatio(); //depois ajusta a página //versão do iReport 5.6.0
Achei interessante sua postagem RenataFA, pois consegui colocar uma tecla de atalho para a Impressão (ctrl + p)

Criado 10 de dezembro de 2008
Ultima resposta 25 de jan. de 2015
Respostas 20
Participantes 9