2013-12-11 28 views
0
import java.awt.*; 
import java.awt.event.*; 
import java.awt.image.BufferedImage; 
import java.awt.print.*; 
import javax.swing.*; 
import javax.swing.table.JTableHeader; 

class print implements ActionListener,KeyListener,Printable 
{ 
JTable table,stable; 
JTable footer = new JTable(1,6); 
JTable table2= new JTable(11,2);; 
JPanel panel,panell; 
String data[][] = new String[100][6]; 
JLabel labelf[]=new JLabel[7]; 
JFrame f; 
public static void main(String[] args) 
{ 
    new print(); 
} 
print() 
{ 
    f = new JFrame("Bill Invoice......"); 
    f.setLayout(null); 
    JButton jbe = new JButton("Back"); 
     //jbe.setFont(labfont3); 

     // labfont=new Font("Kunstler Script",Font.BOLD,40); 
    JLabel la1=new JLabel("SOLD TO :"); 
    JLabel la2=new JLabel("PROFORMA INVOICE"); 
    Font l1=new Font("Times New Roman",Font.BOLD,15); 
    Font l2=new Font("Times New Roman",Font.BOLD,18); 
    //Font l3=new Font("Times New Roman",Font.BOLD,15); 
    la1.setForeground(new Color(138,10,178)); 
    la2.setForeground(new Color(138,10,178)); 

    ImageIcon ic2 = new ImageIcon("vv.jpg"); 
    JLabel piclab2 = new JLabel(ic2); 



    JButton button = new JButton("Print"); 
    JButton button1 = new JButton("Save"); 

     JButton button2 = new JButton("Finish"); 
     String[] columnheader = {"S.No.", "Description", "Bales Bags", "Weight in Kgs", "Price ", "Total" }; 
      labelf[0]=new JLabel("txt10"); 
      labelf[1]=new JLabel("txt11"); 
      labelf[2]=new JLabel("txt111"); 
      labelf[3]=new JLabel("txtt"); 
      labelf[4]=new JLabel("txt12"); 
      labelf[5]=new JLabel("txtx"); 
      labelf[6]=new JLabel("txty"); 


     table2.getColumnModel().getColumn(0).setPreferredWidth(200); 
     table2.getColumnModel().getColumn(1).setPreferredWidth(200); 
     table2.setRowHeight(20); 
     table2.getModel().setValueAt("INVOICE NO.",0,0); 
     table2.getModel().setValueAt("txt00",0,1); 
     table2.getModel().setValueAt("DATE",1,0); 
     table2.getModel().setValueAt(""+"currentTime",1,1); 
     table2.getModel().setValueAt("EXPORTRANS REF.",2,0); 
     table2.getModel().setValueAt("txtz",2,1); 
     table2.getModel().setValueAt("BOOKING NO.",3,0); 
     table2.getModel().setValueAt("txt22",3,1); 
     table2.getModel().setValueAt("CONTAINER NO.",4,0); 
     table2.getModel().setValueAt("txt33",4,1); 
     table2.getModel().setValueAt("SEAL NO.",5,0); 
     table2.getModel().setValueAt("txt44",5,1); 
     table2.getModel().setValueAt("VESSEL NAME",6,0); 
     table2.getModel().setValueAt("txt55",6,1); 
     table2.getModel().setValueAt("SHIPPING LINE",7,0); 
     table2.getModel().setValueAt("txt66",7,1); 
     table2.getModel().setValueAt("BILL OF LANDING NO.",8,0); 
     table2.getModel().setValueAt("txt77",8,1); 
     table2.getModel().setValueAt("IDF NO.",9,0); 
     table2.getModel().setValueAt("txt88",9,1); 
     table2.getModel().setValueAt("IO NO.",10,0); 
     table2.getModel().setValueAt("txt99",10,1); 



     table = new JTable(data,columnheader); 
     //table.setTableHeader(columnNames); 


     footer.getModel().setValueAt("Total",0,1); 

     JTableHeader header = table.getTableHeader(); 
     panel = new JPanel(); 
     panel.setLayout(new BorderLayout()); 
     panel.add(header, BorderLayout.NORTH); 
     panel.add(table, BorderLayout.CENTER); 
     panel.add(footer,BorderLayout.SOUTH); 

     table.getTableHeader().setReorderingAllowed(false); 
     table.setRowHeight(25); 
     footer.setRowHeight(25); 
     table.setShowGrid(false); 
     table.setShowVerticalLines(true); 


      JScrollPane pane = new JScrollPane(table); 
      table.getColumnModel().getColumn(0).setPreferredWidth(24); 
      table.getColumnModel().getColumn(1).setPreferredWidth(200); 



     //table.getModel().setValueAt(1,0,0); 


      table.getTableHeader().setPreferredSize(new Dimension(pane.getWidth(),35)); 

      footer.getColumnModel().getColumn(0).setPreferredWidth(13); 
      footer.getColumnModel().getColumn(1).setPreferredWidth(190); 
      footer.getColumnModel().getColumn(2).setPreferredWidth(65); 
      footer.getColumnModel().getColumn(3).setPreferredWidth(65); 
      footer.getColumnModel().getColumn(4).setPreferredWidth(65); 
      footer.getColumnModel().getColumn(5).setPreferredWidth(82); 

      jbe.setBounds(0,0,105,30); 
      panel.setBounds(180,350,1000,290); 
      table2.setBounds(780,100,400,220); 
      panel.add(pane, BorderLayout.CENTER); 

      la1.setBounds(190,95,150,60); 


      int y=140; 
       for(int i=0;i<=6;i++) 
       { 
       labelf[i].setFont(l1); 
       labelf[i].setBounds(190,y,500,20); 
       y=y+20; 
       f.add(labelf[i]); 
       } 
      la2.setBounds(530,300,300,60); 


      button1.setBounds(1250,550,100,30); 
      button.setBounds(1250,600,100,30); 
      button2.setBounds(1250,650,100,30); 

      table.setFont(l1); 
      table2.setFont(l1); 
      footer.setFont(l1); 
      la1.setFont(l2); 


      la2.setFont(l2); 

      header.setFont(l1); 
      f.add(jbe); 
      f.add(la1); 

      f.add(la2); 
      f.add(button); 
      f.add(button1); 
      f.add(button2); 

      button.addActionListener(this); 
      button1.addActionListener(this); 
      button2.addActionListener(this); 
      jbe.addActionListener(this); 



      f.add(panel); 
      f.add(table2); 

      piclab2.setBounds(0,0,1366,768); 
      f.add(piclab2); 

      f.setSize(1366,768); 
      f.setVisible(true); 

    } 

@Override 
    public void actionPerformed(ActionEvent arg0) 
    { 

     String s=arg0.getActionCommand(); 

     if (s.equals("Print")) 
     { 

        PrinterJob pj = PrinterJob.getPrinterJob(); 

        PageFormat pf = pj.defaultPage(); 
        Paper paper = new Paper(); 

        paper.setImageableArea(50, 100, 400, 200); 
        pf.setPaper(paper); 

        pj.setPrintable(this, pf); 

       if (pj.printDialog()) 
        { 
         try 
         { 
          pj.print(); 

         } 
         catch (PrinterException pe) 
          { 
          System.err.println("Error printing: " + pe.getMessage()); 
          } 

        } 
     } 

    } 

@Override 
public int print(Graphics g, PageFormat pf, int page) throws PrinterException 
{ 
    if (page > 0) 
    { 
     return (NO_SUCH_PAGE); 
    } 

    Graphics2D g2d = (Graphics2D)g; 

    g2d.translate(pf.getImageableX(), pf.getImageableY()); 


    Rectangle rec = f.getBounds(); 
    BufferedImage snapshot = new BufferedImage(rec.width,rec.height,BufferedImage.TYPE_INT_ARGB); 


    //BufferedImage snapshot = AnimeUtilities.createSnapshotOfFrame(pf, Transparency.TRANSLUCENT); 
    double scaleX = pf.getWidth()/snapshot.getWidth(); 
    double scaleY = pf.getHeight();///snapshot.getHeight(); 

    double scaleValue = Math.min(scaleX, scaleY); 
    System.out.println(""+scaleValue); 
    g2d.scale(scaleValue+0.3, scaleValue+0.3); 


    table2.print(g2d); 


    return (PAGE_EXISTS); 



} 

@Override 
public void keyPressed(KeyEvent arg0) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void keyReleased(KeyEvent arg0) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void keyTyped(KeyEvent arg0) { 
    // TODO Auto-generated method stub 

} 

}的Java Swing不打印完整的网页

我已经尝试了太多,但是这个代码打印我的网页只有某一部分......我想打印整页..... 。我是用打印命令不熟悉并且.....没有任何人有想法打印整页...

+3

我想你需要以编程方式确定区域,而不是像'paper.setImageableArea(50,100,400,200);' – alex2410

+1

这样的硬编码,你的意思是“某个部分”。哪一部分 ?正如@ alex2410所说的那部分链接是指定的区域?如果是,请以编程方式确定。 – HpTerm

+1

@hpterm它只打印一张桌子......不是其他类别的元素 –

回答

1

更改按钮xy,使他们出现在form

 button1.setBounds(100, 650, 100, 30); 
     button.setBounds(200, 650, 100, 30); 
     button2.setBounds(300, 650, 100, 30); 
1

我假设你想打印用户界面的所有内容。您必须拨打frame.print()方法;不是table.print()方法。

谢谢。

+0

我也试过...当我给框架..然后打印或表打印最后一行仅框架.....不完整框架... –