Как интегрировать JRViewer в Eclipse RCP - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть приложение RCP, и оно работало нормально ... до сих пор.

Мне нужно обновить некоторые модули, которые читают и пишут файлы xlsm и xlsx, поэтому я обновляю poi.

Но это нарушает мои отчеты JasperReport, версия была очень старая, 2.0.3, поэтому я пытаюсь также обновить ее до 6.1.0, которая содержит нужную мне версию poi.

Но я не могу заставить его работать внутри области просмотра.

Вот так это выглядит сейчас, с jasperreports2.0.3

how it looks now

Кнопка экспорта / сохранения как не работает, с этой ошибкой:

net.sf.jasperreports.engine.JRPrintHyperlink.getHyperlinkType()

Гуглил, и я получил подсказку обновить и использовать JRViewer.

Я пытался ответить на этот вопрос: как напечатать отчет о яшме в Eclipse RCP, используя опцию печати? , но у меня не получилось.

Может кто-нибудь подсказать мне?

1 Ответ

0 голосов
/ 03 ноября 2018

Я понял! ... Модифицированный CreatePartControl ...

public void createPartControl(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new FillLayout(SWT.HORIZONTAL));
//viewerComposite = new ViewerComposite(container,SWT.BORDER);
//viewerComposite.setLayoutData(new GridData(GridData.FILL,GridData.FILL,true,true));

//desde aca
//add the SWT_AWT compposite for SWING contents of GUI              
final Composite swtAwtComposite = new Composite(container, SWT.EMBEDDED);
swtAwtComposite.setBounds(10, 0, 767, 600);

Frame frame = SWT_AWT.new_Frame(swtAwtComposite);

Panel panel = new Panel();
frame.add(panel);
panel.setLayout(new BorderLayout(0, 0));

JRootPane rootPane = new JRootPane();
rootPane.setSize(767, 600);
panel.add(rootPane);

//Define a container yourself
c = rootPane.getContentPane();


super.setPartName("Reportes");

}

Я передаю объект JasperPrint из другого представления, поэтому я создал метод void ...

public void setJasperPrint(JasperPrint jrPrint){
    this.jrPrint = jrPrint;
    //
    jasperviewer = new JRViewer(jrPrint);

    //Add the JRViewer object onto the container to render in GUI
    c.add(jasperviewer);

}

работает как шарм!

new look ! but it works

новый взгляд! Но это работает!

С наилучшими пожеланиями

...