Jtable不打印(打印空白文档)


Jtable table=somevalues;    table.print(JTable.PrintMode.FIT_WIDTH,null,null,true,null,true,null);

打印对话框正在打开,但是当我打印表格时,表格没有打印,只打印空白文档。谁能告诉我我哪里做错了?我已经**编辑**和值的代码是

String data[][]=new String[1][9];
                    String head[]=new String[9];
                    head[0]="Date";
                    head[1]="Q1 Rate per piece";
                    head[2]="Q1 Total pieces";
                    head[3]="Q2 Rate per piece";
                    head[4]="Q2 Total pieces";
                    head[5]="Q3 Rate per piece";
                    head[6]="Q3 Total pieces";
                    head[7]="Total pieces";
                    head[8]="Total Amount";
                        data[0][0]="a";
                        data[0][1]="b";
                        data[0][2]="c";
                        data[0][3]="d";
                        data[0][4]="e";
                        data[0][5]="f";
                        data[0][6]="g";
                        data[0][7]="h";
                        data[0][8]="i";
                     JTable table=new JTable(data,head);
                boolean complete=table.print();

方案1

打印表最简单的方法是调用不带参数的print方法。参见下面的代码示例。
try {
    boolean complete = table.print();
    if (complete) {
        /* show a success message  */
        ...
    } else {
        /*show a message indicating that printing was cancelled */
        ...
    }
} catch (PrinterException pe) {
    /* Printing failed, report to the user */
    ...
}

调用不带参数的print方法时,将显示一个打印对话框,然后以没有页眉或页脚的FIT_WIDTH模式交互式地打印表。下面的代码示例显示了带有完整参数集的print方法签名。

boolean complete = table.print(JTable.PrintMode printMode,
                               MessageFormat headerFormat,
                               MessageFormat footerFormat, 
                               boolean showPrintDialog,
                               PrintRequestAttributeSet attr,
                               boolean interactive,
                               PrintService service);

当您使用所有参数调用print方法时,您显式地选择打印功能,例如打印模式、页眉和页脚文本、打印属性、目标打印服务,以及是否显示打印对话框,以及是否以交互方式或非交互方式打印。要决定哪些参数最适合您的需求,请参阅下面可用功能的描述。

JTable打印API提供以下特性:

交互式或非交互式打印显示打印对话框在打印布局中添加页眉或页脚(或两者)选择打印模式自动布局和分页

解决方案2

下面是打印jtable 的示例
public JTable()
JTable table = new JTable();
public JTable(int rows, int columns)
JTable table = new JTable(2, 3);
public JTable(Object rowData[][], Object columnNames[])
Object rowData[][] = { { "Row1-Column1", "Row1-Column2", "Row1-Column3"},
                       { "Row2-Column1", "Row2-Column2", "Row2-Column3"} };
Object columnNames[] = { "Column One", "Column Two", "Column Three"};
JTable table = new JTable(rowData, columnNames);
public JTable(TableModel model)
TableModel model = new DefaultTableModel(rowData, columnNames);
JTable table = new JTable(model);
public JTable(TableModel model, TableColumnModel columnModel)
TableColumnModel columnModel = new DefaultTableColumnModel();
TableColumn firstColumn = new TableColumn(1);
firstColumn.setHeaderValue(headers[1]);columnModel.addColumn(firstColumn);
TableColumn secondColumn = new TableColumn(0);
secondColumn.setHeaderValue(headers[0]);
columnModel.addColumn(secondColumn);
JTable table = new JTable(model, columnModel);
public JTable(TableModel model, TableColumnModel columnModel, ListSelectionModel selectionModel)
ListSelectionModel selectionModel = new DefaultListSelectionModel();
selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JTable table = new JTable(model, columnModel, selectionModel);

试试这个代码

  public class TablePrint extends javax.swing.JFrame {
        /**
         * Creates new form TablePrint
         */
        public TablePrint() {
            initComponents();
        }
      @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
            jButtonPrint = new javax.swing.JButton();
            jScrollPane1 = new javax.swing.JScrollPane();
            jTableData = new javax.swing.JTable();
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            jButtonPrint.setText("Print");
            jButtonPrint.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButtonPrintActionPerformed(evt);
                }
            });
            jTableData.setModel(new javax.swing.table.DefaultTableModel(
                new Object [][] {
                    {null, null},
                    {null, null},
                    {null, null},
                    {null, null}
                },
                new String [] {
                    "Name", "Age"
                }
            ));
            jScrollPane1.setViewportView(jTableData);
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(39, 39, 39)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jButtonPrint)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addContainerGap(50, Short.MAX_VALUE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(19, 19, 19)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(18, 18, 18)
                    .addComponent(jButtonPrint)
                    .addGap(0, 34, Short.MAX_VALUE))
            );
            pack();
        }// </editor-fold>                        
        private void jButtonPrintActionPerformed(java.awt.event.ActionEvent evt) {                                             
           try{
                jTableData.print();
            }catch(Exception ee){}
        }                                            
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new TablePrint().setVisible(true);
                }
            });
        }
        // Variables declaration - do not modify                     
        private javax.swing.JButton jButtonPrint;
        private javax.swing.JScrollPane jScrollPane1;
        private javax.swing.JTable jTableData;
        // End of variables declaration                   
    }

最新更新