我想使用JRViewer在jpanel上显示 JasperReports 的报告。
在我的应用程序中(如上图所示),我有一个jcombobox和一个jbutton。我在jcombobox中有多个报告名称,点击jbutton我想在jrviewer中显示报告。当我从组合框中选择其他报告名称后单击按钮时,我第一次单击该按钮时,按钮工作按钮不起作用。
下面是我正在使用的代码
reportPanel = new JPanel();
reportPanel.setBackground(Color.white);
JScrollPane scrollPane = new JScrollPane(reportPanel);
scrollPane.setBounds(20, 150,dim.width-60, 370);
mainPanel.add(scrollPane);
String pathUrl = System.getProperty("user.dir");
String district_cd = getKeyForValue(districtMap, districtCombo.getSelectedItem().toString());
String jasper_name = getKeyForValue(reportMap, reportCombo.getSelectedItem().toString());
String filename = FilenameUtils.removeExtension(jasper_name);
Map reportParameter = new HashMap();
reportParameter.put("district_cd", district_cd);
JasperReport report = (JasperReport) JRLoader.loadObject(pathUrl+"//"+jasper_name);
JasperPrint jasperPrint = JasperFillManager.fillReport(report,reportParameter,patchConnection);
JRViewer jrviewer = new JRViewer(jasperPrint);
reportPanel.setLayout(new BorderLayout());
reportPanel.add(jrviewer);
reportPanel.revalidate();
reportPanel.repaint(50L);
mainPanel.revalidate();
mainPanel.repaint(50L);
stopWaitCursor(frame);
frame.repaint();
答案 0 :(得分:0)
它有效,但你看不到它...... 每次你的方法都添加一个新的滚动窗格,新的报表面板和一个新的JRViewer等等。但你没有清除旧的。之前从主面板中删除旧组件。
答案 1 :(得分:0)
reportPanel.removeall();
完成了工作。 现在它正常运作。 谢谢所有提供支持