从网上抄的,不知道行不行只要在页面中,把要打印输出的内容放在一个iframe,或div,或其它容器中,都可以通过获得innerHTML的办法得到要打印的内容
* 另外生成一个页面,然后直接调用windows.print,把页面中的内容全部输出
 
所以,大家可以参考这个作法,灵活运用。
 
 
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>New Page 1</title>
 
<style>
@media print { .ipt {display:none} }
</style> 
 
</head>
 
<body>
 
<script language="javascript">
function DtPrint() {
    if (window.print) {
        var p_title = document.all.p_1.innerHTML;
        var p1 = document.all.p_2.innerHTML;
        var p2 = document.all.p_2.innerHTML;
       
                var css = '<style type="text/css">' +
                 'p { line-height: 120%}' +
                 '.ftitle { line-height: 120%; font-size: 18px; color: #000000}' +
                 'td { font-size: 10px; color: #000000}' +
                 '</style>' ;
        var body ='<table width="640" border="0" cellspacing="0" cellpadding="5">' +
                  ' <tr> ' +
                  ' <td class="ftitle"> ' +
                  ' <div align="center" class=ftitle>' + p_title + '</div>' + p1 + 
                  ' </td>' +
                  ' </tr>' +
                  '</table>';
        document.body.innerHTML = '<center>' + css + body + '</center>';
        window.print();
    }
}
</SCRIPT>
 
<input type="button" value="打印" onclick="javascript:DtPrint()" >
<div id=p_11>p_1....</div>
<div id=p_2><input type="button" name="Cclose" value="退出"  class="ipt">
p_2_p2p2p2p2p2p2p2p2p22p2p2p2p2p2p2p2p2p2p2p2p..</div>
<IFRAME width="270" ID="p_1" height="150" valign="bottom">
kjskfjslfkjdslksdjfdslkdjfsdlkfj</IFRAME>
 
</body>
 
</html>

解决方案 »

  1.   

    谢谢楼上的哥们,不过我想打印的是swing上的东西
      

  2.   

    楼上的那样打印不行!
    http://java.sun.com/developer/onlineTraining/Programming/JDCBook/advprint.html
    先到这里看看!再有什么问题你再问好了!
      

  3.   

    to flywind63(紫色的偶然) :你有QQ或MSN吗,那样交流更方便啊,有什么不懂的我好问你
      

  4.   

    to flywind63(紫色的偶然):你给我的那段代码在分页时有问题,还有的就是,出现打印对话框之后,点取消也能开始打印,在就是我想在页头那个地方加上标题,例如:人员信息表,该怎么加呢?
      

  5.   

    QQ号码:88249701
    关于分页的问题,你要统计行数,列数,得到行的高度,每一列的宽度,然后得到你要打印的纸张的信息(最关键的就是纸张的imageableWidth, imageableHeight),然后如果要在页头打印标题的话,首先确定标题的高度,然后用imageableHeight减去标题的高度,再得到的数值就是真正要打印表格区域的高度(同理可以再减去一些高度来打印页眉,页脚等等)。接下去就要统计一行的宽度是否大于可打印区域的宽度,如果大于的话就要分页比如得到当前页面的开始列,结束列并且计算出每一页的宽度。同理再得到每一列可打印的页数,开始行,结束行,以及每一页的高度!然后用两个循环一个循环是从零到按行分需要打印的页数,另一个再上一循环内部,从零到按列分需要打印的页数(实际就是计算出总共需要打印的页数),然后用一book类,把每一页都添加到book类中!设置book类可打印,然后打印即可!
      

  6.   

    可以查看一下《JAVA 核心思想》
      

  7.   

    谢谢 flywind63(紫色的偶然),我试试,马上结贴
      

  8.   

    到SUN的网站上,或者JDK字带的DEMO里面找,有写的很好的代码.
      

  9.   

    http://community.csdn.net/Expert/topic/3293/3293148.xml?temp=.3172571