import net.sf.jasperreports.engine.JRAlignment; import net.sf.jasperreports.engine.JRElement; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.design.JRDesignBand; import net.sf.jasperreports.engine.design.JRDesignExpression; import net.sf.jasperreports.engine.design.JRDesignField; import net.sf.jasperreports.engine.design.JRDesignLine; import net.sf.jasperreports.engine.design.JRDesignStaticText; import net.sf.jasperreports.engine.design.JRDesignStyle; import net.sf.jasperreports.engine.design.JRDesignTextField; import net.sf.jasperreports.engine.design.JasperDesign; import net.sf.jasperreports.view.JasperViewer; import java.awt.Color; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class ProductReport { public static void main(String[] args) { try { List dataList = new ArrayList(); HashMap dataMap = new HashMap(); dataMap.put("name", "ProductX"); dataMap.put("cost", 100.01); dataList.add(dataMap); dataMap = new HashMap(); dataMap.put("name", "ProductY"); dataMap.put("cost", 23.00); dataList.add(dataMap); dataMap = new HashMap(); dataMap.put("name", "ProductZ"); dataMap.put("cost", 99.89); dataList.add(dataMap); JasperDesign jasperDesign = getProductJasperDesign(); JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); JRBeanCollectionDataSource jrBeanCollectionDataSource = new JRBeanCollectionDataSource(dataList); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), jrBeanCollectionDataSource); JasperViewer.viewReport(jasperPrint); } catch (Exception e) { e.printStackTrace(); } } private static JasperDesign getProductJasperDesign() throws JRException { JasperDesign jasperDesign = new JasperDesign(); jasperDesign.setName("Product_Report"); jasperDesign.setLeftMargin(10); jasperDesign.setRightMargin(10); jasperDesign.setBottomMargin(20); jasperDesign.setTopMargin(20); jasperDesign.setPageHeight(800); jasperDesign.setPageWidth(600); jasperDesign.setColumnWidth(500); jasperDesign.setIgnorePagination(true); // Add styles to report JRDesignStyle titleText = new JRDesignStyle(); titleText.setName("titleText"); titleText.setDefault(false); titleText.setMode(JRElement.MODE_OPAQUE); titleText.setFontName("Arial"); titleText.setFontSize(16); jasperDesign.addStyle(titleText); JRDesignStyle headingText = new JRDesignStyle(); headingText.setName("headingText"); headingText.setMode(JRElement.MODE_OPAQUE); headingText.setFontName("Arial"); headingText.setForecolor(new Color(16777215)); headingText.setBackcolor(new Color(6776679)); headingText.setFontSize(10); jasperDesign.addStyle(headingText); JRDesignStyle reportingText = new JRDesignStyle(); reportingText.setName("reportingText"); reportingText.setDefault(false); reportingText.setMode(JRElement.MODE_OPAQUE); reportingText.setFontName("Arial"); reportingText.setBackcolor(new Color(16119285)); reportingText.setFontSize(9); jasperDesign.addStyle(reportingText); // End of styles // Field Values JRDesignField field = new JRDesignField(); field = new JRDesignField(); field.setName("name"); field.setValueClass(String.class); jasperDesign.addField(field); field = new JRDesignField(); field.setName("cost"); field.setValueClass(Double.class); jasperDesign.addField(field); JRDesignBand band = new JRDesignBand(); band.setHeight(40); JRDesignStaticText statictextField = new JRDesignStaticText(); statictextField.setText("Product Record Report"); statictextField.setX(0); statictextField.setY(0); statictextField.setWidth(200); statictextField.setHeight(26); statictextField.setStyle(titleText); JRDesignLine line = new JRDesignLine(); line.setX(0); line.setY(26); //line.setWidth(515); line.setHeight(0); band.addElement(statictextField); band.addElement(line); jasperDesign.setTitle(band); // Page header band = new JRDesignBand(); band.setHeight(20); statictextField = new JRDesignStaticText(); statictextField.setX(0); statictextField.setY(0); statictextField.setWidth(99); statictextField.setHeight(20); statictextField.setText("Product Name"); statictextField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_CENTER); statictextField.setStyle(headingText); band.addElement(statictextField); statictextField = new JRDesignStaticText(); statictextField.setX(100); statictextField.setY(0); statictextField.setWidth(100); statictextField.setHeight(20); statictextField.setText("Product Cost"); statictextField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_CENTER); statictextField.setStyle(headingText); band.addElement(statictextField); jasperDesign.setPageHeader(band); // Add Detail Section band = new JRDesignBand(); band.setHeight(19); JRDesignTextField textField = new JRDesignTextField(); textField.setX(0); textField.setY(0); textField.setWidth(99); textField.setHeight(18); textField.setStretchWithOverflow(true); textField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_CENTER); textField.setStyle(reportingText); JRDesignExpression expression = new JRDesignExpression(); expression = new JRDesignExpression(); expression = new JRDesignExpression(); expression.setValueClass(String.class); expression.setText("$F{name}"); textField.setExpression(expression); band.addElement(textField); textField = new JRDesignTextField(); textField.setX(100); textField.setY(0); textField.setWidth(99); textField.setHeight(18); textField.setStretchWithOverflow(true); textField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_CENTER); textField.setStyle(reportingText); expression = new JRDesignExpression(); expression.setValueClass(Double.class); expression.setText("$F{cost}"); textField.setExpression(expression); band.addElement(textField); textField = new JRDesignTextField(); jasperDesign.setDetail(band); //Column footer band = new JRDesignBand(); jasperDesign.setColumnFooter(band); //Page footer band = new JRDesignBand(); jasperDesign.setPageFooter(band); //Summary band = new JRDesignBand(); jasperDesign.setSummary(band); return jasperDesign; } }