Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package view; import DAO.InvoiceDAO; import Utility.FileManager; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionListener; import java.sql.SQLException; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.BorderFactory; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import model.InvoiceModel; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PiePlot3D; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; import org.jfree.util.Rotation; /** * * @author rajesh */ public class ViewReportUI extends javax.swing.JFrame { private Iterable<InvoiceModel> myInvoice; private ChartPanel chartPanel; /** * Creates new form ViewReportUI */ public ViewReportUI() throws SQLException, ClassNotFoundException, ParseException { InvoiceDAO df = new InvoiceDAO(); myInvoice = df.getInvoice(); this.setChartPanel(); initComponents(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jButton1 = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle(" Expense Report"); setResizable(false); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { formWindowClosing(evt); } }); String col[] = { "Amount", "Store", "Date of Purchase", "Date Addded" }; DefaultTableModel tableModel = new DefaultTableModel(col, 0) { public boolean isCellEditable(int row, int column) { return false;//This causes all cells to be not editable } }; jTable1.setModel(tableModel); for (model.InvoiceModel in : myInvoice) { Object[] objs = { "$" + in.getAmount(), in.getStore(), in.getDateOfPurchase(), in.getAddedDate() }; tableModel.addRow(objs); } jTable1.setGridColor(Color.gray); jTable1.getTableHeader().setBackground(new Color(102, 178, 255)); jTable1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jTable1MouseClicked(evt); } }); jScrollPane1.setViewportView(jTable1); jButton1.setText("Close"); jPanel1.setLayout(new java.awt.BorderLayout()); PieDataset dataset = createDataset(); // based on the dataset we create the chart JFreeChart chart = createChart(dataset, "Hello"); // we put the chart into a panel this.chartPanel = new ChartPanel(chart); // default size chartPanel.setPreferredSize(new Dimension(500, 270)); // this.jPanel1.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); // System.out.println(chartPanel == null); jPanel1.add(chartPanel); jPanel1.validate(); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton1).addGap(242, 242, 242)) .addGroup(layout.createSequentialGroup().addGap(15, 15, 15) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 536, Short.MAX_VALUE) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap(14, Short.MAX_VALUE))); layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup().addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 293, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jButton1) .addGap(20, 20, 20))); pack(); setLocationRelativeTo(null); }// </editor-fold>//GEN-END:initComponents private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MouseClicked // TODO add your handling code here: }//GEN-LAST:event_jTable1MouseClicked private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); }//GEN-LAST:event_formWindowClosing /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(ViewReportUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(ViewReportUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(ViewReportUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(ViewReportUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { try { new ViewReportUI().setVisible(true); } catch (SQLException ex) { Logger.getLogger(ViewReportUI.class.getName()).log(Level.SEVERE, null, ex); } catch (ClassNotFoundException ex) { Logger.getLogger(ViewReportUI.class.getName()).log(Level.SEVERE, null, ex); } catch (ParseException ex) { Logger.getLogger(ViewReportUI.class.getName()).log(Level.SEVERE, null, ex); } } }); } public void addActionListener(ActionListener listener) { this.jButton1.addActionListener(listener); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButton1; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; // End of variables declaration//GEN-END:variables public Object getCloseButton() { return this.jButton1;//To change body of generated methods, choose Tools | Templates. } private void setChartPanel() { } private PieDataset createDataset() { // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. DefaultPieDataset result = new DefaultPieDataset(); InvoiceDAO dao = null; try { HashMap<String, Double> value = new InvoiceDAO().getTotalTillNow(); FileManager manager = new FileManager(); String[] categories = manager.getFileContent("Database/category.txt"); for (String key : value.keySet()) { result.setValue(key + "$ " + value.get(key), value.get(key)); } } catch (SQLException ex) { Logger.getLogger(ViewReportUI.class.getName()).log(Level.SEVERE, null, ex); } catch (ClassNotFoundException ex) { Logger.getLogger(ViewReportUI.class.getName()).log(Level.SEVERE, null, ex); } return result; } private JFreeChart createChart(PieDataset dataset, String hello) { //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. JFreeChart chart = ChartFactory.createPieChart3D("Expense Tracker", // chart title dataset, // data true, // include legend true, false); PiePlot3D plot = (PiePlot3D) chart.getPlot(); plot.setStartAngle(290); plot.setDirection(Rotation.CLOCKWISE); plot.setForegroundAlpha(0.5f); return chart; } }