Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何打印Java书籍?_Java_Api_Printing - Fatal编程技术网

如何打印Java书籍?

如何打印Java书籍?,java,api,printing,Java,Api,Printing,下面代码的问题是,它不打印bk(Java Book),只打印用户界面窗口“g” 有人能解释一下如何打印Java书籍吗 public class printInvoice extends javax.swing.JFrame implements Printable { JFrame frameToPrint; /** Creates new form SimplePrint */ public void SimplePrint(JFrame f) {

下面代码的问题是,它不打印bk(Java Book),只打印用户界面窗口“g”

有人能解释一下如何打印Java书籍吗

public class printInvoice extends javax.swing.JFrame implements Printable {

    JFrame frameToPrint;


        /** Creates new form SimplePrint */
        public void SimplePrint(JFrame f) {
            frameToPrint = f;

        }

        /** Creates new form NewJFrame */
        public printInvoice() {
            initComponents();
            this.setVisible(true);

            print2();

        }

        /** 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")


        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        }                                        

        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {

                public void run() {
                    new printInvoice().setVisible(true);
                }
            });
        }

        public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws PrinterException {
            if (pageIndex > 0) {
                return (NO_SUCH_PAGE);
            } else {
                Graphics2D g2d = (Graphics2D) g;
                g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
                // Turn off double buffering
                //componentToBePrinted.paint(g2d);
                //frameToPrint.print(g);
                    paint(g);
                  //  this.print(g);

                 //  this.print(g);

                // Turn double buffering back on
                return (PAGE_EXISTS);
            }
        }


        // Variables declaration - do not modify                     
        private javax.swing.JButton jButton1;
        private javax.swing.JComboBox jComboBox1;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JList jList1;
        private javax.swing.JRadioButton jRadioButton1;
        private javax.swing.JScrollPane jScrollPane1;
        // End of variables declaration                   
        int userCountAmount;
        dataBase data = new dataBase();
        Book bk = new Book();
        PrinterJob PJ = PrinterJob.getPrinterJob();


        public void print2() {
            userCountAmount = data.getAmountOfUsers();

            PageFormat portrait = PJ.defaultPage();

            portrait.setOrientation(PageFormat.PORTRAIT);


                jLabel1.setText("Print number: "+0);
                bk.append((Printable) this, PJ.defaultPage(),1);
                jLabel1.setText("Print number: "+1);
                bk.append((Printable) this, PJ.defaultPage(),2);
                jLabel1.setText("Print number: "+2);
                bk.append((Printable) this, PJ.defaultPage(),3);
    System.out.println(bk.toString());

            //PageFormat PF   =   PJ.pageDialog(PJ.defaultPage());
            PJ.setPageable(bk);

         //    PJ.setPrintable((Printable) this);
            boolean doPrint = PJ.printDialog();
            //JOptionPane.showMessageDialog(null, doPrint);
            if (doPrint) {
                try {

                        PJ.print();

                } catch (PrinterException ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                }
            }
        }
}

打印书籍时,打印机作业正在使用
打印(图形g、页面格式、页面格式、int pageIndex)
。您的
print
方法调用
paint(g)
,这就是UI框架的方法

如果不想打印UI控件的图像,则应使用
print
方法的
g
将所需图像绘制到页面

编辑:例如,将文本绘制到页面中间(未测试):

顺便说一句:

在代码中,如果要打印多个页面,则需要更改以下位置:

    if (pageIndex > 0) {
        return (NO_SUCH_PAGE);

那么,如果当我尝试执行
paint(bk)
时产生错误,我该如何调用本书中的方法呢?非常感谢,效果非常好!
    if (pageIndex > 0) {
        return (NO_SUCH_PAGE);