Click here to Skip to main content
15,884,177 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
hey im trying to print a billing receipt in netbeans. Billing receipt is getting table data from another table data.Every thing is working fine:) problem is that when i add rows more then the length of Jtable it makes a scroll bar and data under scrollbar bar is not printing. i want to print my complete JTable whether that is in scrollbar or not. Software Should print the complete bill including components of JFrame and Complete Jtable. Here is my Code

package project;

import javax.swing.table.DefaultTableModel;

import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;


/**
 *
* @author Numan Khan
*/
public class reciept extends javax.swing.JPanel implements Printable{
static DateFormat date=new SimpleDateFormat("dd-M-yyyy");

JFrame f=new JFrame();

static SimpleDateFormat time=new SimpleDateFormat("h:m:s a");



static Date d=new Date(System.currentTimeMillis());  
Connection conn;




/**
 * Creates new form reciept
 */
public reciept() {
  initComponents();
  conn=DB.con();       
  cal();
  jTable1.setBackground(Color.white);
  }



 @Override
public int print(Graphics g, PageFormat pf, int i) throws PrinterException {
    if (i > 0) {
        return NO_SUCH_PAGE;
    }
    Graphics2D g2d = (Graphics2D) g;
    g2d.translate(pf.getImageableX(), pf.getImageableY());
    reciept.this.printAll(g);
    return Printable.PAGE_EXISTS;
}













public void cal(){

    reciept.jTable1.getTableHeader().setFont(new Font("Dialog",Font.PLAIN,7));
    jTable1.setBackground(Color.decode("#FFFFFF"));


 String s=date.format(d);
    String ta=time.format(d);

     t.setText(ta);

    da.setText(s);
    jLabel12.setText(sale.ca);
    String cas=String.valueOf(sale.bill);
    jLabel14.setText(cas);

        tb.setText(sale.b);







        // ------------------------------------------------------------------------------------------------------






     double sum=0;

     for(int i=0; i<jTable1.getRowCount(); i++)
     {


           String d=jTable1.getValueAt(i, 3).toString();
     double d1=Double.parseDouble(d);
    sum+=d1;

     }

     String q1=String.valueOf(sum);

     tq.setText(q1);







     //-----------------------------------------------------------------------------------------------------------------------
try {
    Statement st=conn.createStatement();



    String sql="SELECT billnumber From bill";
    ResultSet rs=st.executeQuery(sql);
    if(rs.next())
    {

    int bill=rs.getInt("billnumber");

    String bnum=String.valueOf(bill);
    bn.setText(bnum);
    bill++;
    st.executeUpdate("UPDATE bill Set billnumber='"+bill+"'");

    }


} catch (Exception ex) {
    Logger.getLogger(reciept.class.getName()).log(Level.SEVERE, null, ex);
}







        //-------------------------------------------------------------------------------------------------------------











}



































/**
 * 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">                          
private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jLabel1 = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();
    jLabel3 = new javax.swing.JLabel();
    jLabel4 = new javax.swing.JLabel();
    jLabel5 = new javax.swing.JLabel();
    jSeparator1 = new javax.swing.JSeparator();
    bn = new javax.swing.JLabel();
    da = new javax.swing.JLabel();
    t = new javax.swing.JLabel();
    jLabel9 = new javax.swing.JLabel();
    tq = new javax.swing.JLabel();
    jLabel10 = new javax.swing.JLabel();
    tb = new javax.swing.JLabel();
    jSeparator2 = new javax.swing.JSeparator();
    jLabel14 = new javax.swing.JLabel();
    jLabel13 = new javax.swing.JLabel();
    jLabel12 = new javax.swing.JLabel();
    jLabel11 = new javax.swing.JLabel();
    jSeparator6 = new javax.swing.JSeparator();
    jLabel15 = new javax.swing.JLabel();
    jLabel16 = new javax.swing.JLabel();
    jLabel6 = new javax.swing.JLabel();
    jLabel7 = new javax.swing.JLabel();
    jScrollPane1 = new javax.swing.JScrollPane();
    Object[] col={ "S#","Dis","Price","Qty","Disc","Amt"};

    DefaultTableModel tm=new DefaultTableModel(sale.tabledata,col);
    jTable1 = new javax.swing.JTable();
    jLabel8 = new javax.swing.JLabel();

    jPanel1.setBackground(new java.awt.Color(255, 255, 255));
    jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

    jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/project/logo.png"))); // NOI18N
    jPanel1.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(56, 0, 74, 45));

    jLabel2.setFont(new java.awt.Font("Trajan Pro", 1, 21)); // NOI18N
    jLabel2.setText("Tayyab Fabrics");
    jPanel1.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(22, 51, -1, -1));

    jLabel3.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    jLabel3.setText("Shop No. G-1, Rabi Center , Hariyanwala Chowk, D-Ground");
    jPanel1.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 79, 400, -1));

    jLabel4.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    jLabel4.setText("Ph #  041-8546800");
    jPanel1.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(73, 108, 105, -1));

    jLabel5.setFont(new java.awt.Font("Aharoni", 0, 8)); // NOI18N
    jLabel5.setText("Sales Receipt");
    jPanel1.add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(64, 146, -1, 21));

    jSeparator1.setForeground(new java.awt.Color(0, 0, 0));
    jPanel1.add(jSeparator1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 124, 223, -1));

    bn.setFont(new java.awt.Font("Agency FB", 0, 8)); // NOI18N
    bn.setText("Number # !");
    jPanel1.add(bn, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 149, 36, 14));

    da.setFont(new java.awt.Font("Agency FB", 0, 8)); // NOI18N
    da.setText("Date");
    jPanel1.add(da, new org.netbeans.lib.awtextra.AbsoluteConstraints(79, 129, 83, 16));

    t.setFont(new java.awt.Font("Agency FB", 0, 8)); // NOI18N
    t.setText("Time");
    jPanel1.add(t, new org.netbeans.lib.awtextra.AbsoluteConstraints(147, 146, 85, 21));

    jLabel9.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    jLabel9.setText("Total Qty");
    jPanel1.add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 380, -1, -1));

    tq.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    tq.setText("jLabel10");
    jPanel1.add(tq, new org.netbeans.lib.awtextra.AbsoluteConstraints(51, 380, 40, 10));

    jLabel10.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    jLabel10.setText("Total");
    jPanel1.add(jLabel10, new org.netbeans.lib.awtextra.AbsoluteConstraints(104, 381, 31, -1));

    tb.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    tb.setText("jLabel11");
    jPanel1.add(tb, new org.netbeans.lib.awtextra.AbsoluteConstraints(151, 383, 50, 7));

    jSeparator2.setForeground(new java.awt.Color(0, 0, 0));
    jPanel1.add(jSeparator2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 397, 224, -1));

    jLabel14.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    jLabel14.setText("jLabel14");
    jPanel1.add(jLabel14, new org.netbeans.lib.awtextra.AbsoluteConstraints(152, 405, 70, 17));

    jLabel13.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    jLabel13.setText("Cash return");
    jPanel1.add(jLabel13, new org.netbeans.lib.awtextra.AbsoluteConstraints(101, 405, -1, 16));

    jLabel12.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    jLabel12.setText("jLabel12");
    jPanel1.add(jLabel12, new org.netbeans.lib.awtextra.AbsoluteConstraints(55, 405, 40, 16));

    jLabel11.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    jLabel11.setText("Cash Recieved");
    jPanel1.add(jLabel11, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 410, -1, -1));

    jSeparator6.setForeground(new java.awt.Color(0, 0, 0));
    jPanel1.add(jSeparator6, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 479, 237, -1));

    jLabel15.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    jLabel15.setText("Sold product can be exchanged within 8 days");
    jPanel1.add(jLabel15, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 428, 209, 14));

    jLabel16.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    jLabel16.setText("Thank you for Shoping here");
    jPanel1.add(jLabel16, new org.netbeans.lib.awtextra.AbsoluteConstraints(37, 448, 160, -1));

    jLabel6.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    jLabel6.setText("Software Contact:");
    jPanel1.add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(22, 464, 65, 9));

    jLabel7.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    jLabel7.setText("+92 306 909 6975");
    jPanel1.add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(97, 464, 90, 9));

    jTable1.setFont(new java.awt.Font("Dialog", 0, 6));
    jTable1.setModel(tm);
    jTable1.setEnabled(false);
    jTable1.setFocusable(false);
    jTable1.setRowHeight(14);
    jScrollPane1.setViewportView(jTable1);

    jPanel1.add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 173, 192, 40));

    jLabel8.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N
    jLabel8.setText("Faisalalabad");
    jPanel1.add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(84, 92, 58, -1));

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
    this.setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(0, 0, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 487, javax.swing.GroupLayout.PREFERRED_SIZE)
    );
}// </editor-fold>                        


// Variables declaration - do not modify                     
private javax.swing.JLabel bn;
private javax.swing.JLabel da;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JSeparator jSeparator6;
public static javax.swing.JTable jTable1;
private javax.swing.JLabel t;
private javax.swing.JLabel tb;
private javax.swing.JLabel tq;
// End of variables declaration                   




public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            JFrame f = new JFrame();
            f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            final reciept pt = new reciept();
            f.add(pt, BorderLayout.CENTER);
          JButton b = new JButton(new AbstractAction("Print") {

                @Override
                public void actionPerformed(ActionEvent e) {
                  PrinterJob pj = PrinterJob.getPrinterJob();
                    Paper paper = new Paper();
                     PageFormat pf = pj.defaultPage();
                     pf.setPaper(paper);
    pf.setOrientation(PageFormat.PORTRAIT);
                    pj.setPrintable(pt, pf);

                        try {
                            pj.print();
                        } catch (PrinterException pe) {
                            pe.printStackTrace(System.err);
                        }

           }
            });
              f.getRootPane().setDefaultButton(b);
     b.requestFocus();
            JPanel p = new JPanel();
         p.add(b);
         p.setBackground(Color.BLACK);
            f.add(p, BorderLayout.NORTH);

            f.pack();

            f.setVisible(true);

        }
    });
}



}


What I have tried:

im trying to make a billing system
Posted
Updated 13-Mar-20 21:55pm
Comments
Richard MacCutchan 14-Mar-20 5:33am    
Please do not just dump hundreds of lines of code and expect someone to figure out what it is doing. Show just the part that is not working and provide some proper details. As it is You should be creating the print output from the source data rather than what is currently on the screen.

1 solution

Take a button.
add the following code :
Syntax -> .print();
table.print();
Here,
table - is my table name
print() - inbuild method

Thanks me later
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900