一个jframe 里面有一个jtable表,我想把这个表打印出来,该怎么实现呢?

解决方案 »

  1.   

    J2SE 5 在 JTable 中添加了一些方法,从而为某些普通打印需求提供方便的访问。print() 是一个简单的新方法,它允许快速简单地向应用程序添加打印支持。另外,新的 getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat) 方法可满足更高级的打印需求。
      

  2.   

    我已经试过了,提示:E:\student>javac studentManager.java
    .\scoreInfSelect.java:353: cannot resolve symbol
    symbol  : method print ()
    location: class javax.swing.JTable
                           jt1.print();
                              ^
    1 error
    我该怎么做?
      

  3.   

    $ zz╭ ╮╭ ﹌╮.       $
    $   z(o-.-o)(o-.-o) .      $
    $ ┏~﹊︸ ̄~﹊︸ ̄~┓      $
    $ IT者-IT开发者的网站--    $
    $ 10万篇技术资料--天天更新 $
    $ -----www.itzhe.cn-----   $
      

  4.   

    CSDN 社区108名版主专家高手首次聚首,难道社区里的所有人都参加聚会去了么?怎么就没个主事的人来解决一下菜鸟们的疑惑呢?
      

  5.   

    记得用Toolkit类打什么都可以,打窗口都可以,别说打表格了!
      

  6.   

    我试过用toolkit打印,不过打印机没反映,帮忙看看
    try
           {
                 Toolkit kit = Toolkit.getDefaultToolkit(); 
                                       //获取工具箱
                                 Properties props = new Properties();
                                  
                                  props.setProperty("awt.print.printer","Epson5000");
                                  props.setProperty("awt.print.numCopies","1");
                                  
                                  if (kit != null) {
                                  //获取工具箱自带的打印对象
                                  PrintJob printJob = kit.getPrintJob(this, "打印查询结果", props);
                                  if (printJob != null) {
                                  Graphics pg = printJob.getGraphics(); //获取打印对象的图形环境
                                 if (pg != null) 
                                 {
                                  try 
                                 {
                                      jp1.printAll(pg); 
                                      this.repaint();
              
                                 }catch(Exception e)
                                 {
                                 }
                                  }
                                  }     
                                 }
      

  7.   

    我还是不知道呀
    刚学JAVA不久,来学习
      

  8.   

    如果只是打印表的话,就用一个JTable.print();就可以了,
    如果是打印整个组件的话,我这里有一个例子,希望可以对你有所帮助
    package print;
    import java.awt.*;import javax.print.attribute.HashPrintRequestAttributeSet;
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.font.FontRenderContext;
    import java.awt.font.TextLayout;
    import java.awt.geom.AffineTransform;
    import java.awt.geom.GeneralPath;
    import java.awt.geom.Line2D;
    import java.awt.geom.Point2D;
    import java.awt.geom.Rectangle2D;
    import java.awt.print.PageFormat;
    import java.awt.print.Printable;
    import java.awt.print.PrinterException;
    import java.awt.print.PrinterJob;
    public class PrintTestzzg extends JFrame{ PrintPanel canve;
    JTable aa;
    JButton Jbtn;
    HashPrintRequestAttributeSet attribute;
    JScrollPane jscrollpane;

    public PrintTestzzg(){
    canve=new PrintPanel();
    setSize(400,300);

    Jbtn=new JButton("点我打印");

    Jbtn.addActionListener(new JbtnAction());
    attribute=new HashPrintRequestAttributeSet();

    jscrollpane=new JScrollPane(canve);



    canve.setPreferredSize(new Dimension(3000,3000));


    add(jscrollpane,BorderLayout.CENTER);
    add(Jbtn,BorderLayout.SOUTH);
    validate();
    setVisible(true);

    }
    public static void main(String[] args){
    new PrintTestzzg();



    }
    class JbtnAction implements ActionListener{ public void actionPerformed(ActionEvent e) {
    PrinterJob aa=PrinterJob.getPrinterJob();
    aa.setPrintable(canve);
    if(aa.printDialog(attribute)){
    try {
    aa.print(attribute);
    } catch (PrinterException e1) {
    e1.printStackTrace();
    }


    }

    }

    }
    class PrintPanel extends JPanel implements Printable  {
    public PrintPanel(){
    setLayout(new BorderLayout());

    //
    JPanel panel1=new JPanel();
    panel1.setLayout(new BorderLayout());
    panel1.add(new JButton("5555"),BorderLayout.CENTER);
    add(panel1,BorderLayout.EAST);

    setBackground(Color.BLUE);



    JButton cc=new JButton("kkkkkkk");
    add(cc,BorderLayout.SOUTH);
    validate();
    }



    public void paint(Graphics g)
       {  
          super.paintComponent(g);
          Graphics2D g2 = (Graphics2D) g;
          drawPage(g2);
       } public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
     if (page >= 1) return Printable.NO_SUCH_PAGE;
          Graphics2D g2 = (Graphics2D) g;
          g2.translate(pf.getImageableX(), pf.getImageableY());
          g2.draw(new Rectangle2D.Double(0, 0, pf.getImageableWidth(), pf.getImageableHeight()));       drawPage(g2);



    return Printable.PAGE_EXISTS;
    }





    public void drawPage(Graphics2D g2)
       {  

    super.paint(g2);

    g2.drawLine(0, 0,300, 600);

       }




    }

    }
      

  9.   

    谢谢tiger0804()不过我还是不太明白printPanel里的内容,如果向我所说的要打印jframe里的jtable 该如何修改PrintPanel里的内容呢?
      

  10.   

    这年头搞Swing界面的真的好少啊...大家都做Web
      

  11.   

    看一下你的jdk版本是1.4还是1.5?
      

  12.   

    呵呵,我不怎么懂,不过多看点API应该可以找点解决问题的办法的
      

  13.   

    TBD2 on sheet "Sheet1" not supported - omitting是什么意思啊,我在操作excel时数据能写入已存在的excel文件,但是文件中原来的文字变成乱码,而且有上面的提示,请指教,谢谢
      

  14.   

    你的帖子都发了一个多月了哦~~
    可惜我对java的GUI不熟,所以暂时帮不了你。
    你的另外一个问题,就是select语句的问题,我在你提问的地方回答了。