当前位置:  技术问答>java相关

如何解决WEB中打印问题?(急!!!)

    来源: 互联网  发布时间:2015-04-04

    本文导语:  具体为打印table中的内容,而不是整个页面。 哪里能找到相关控件? | 真是些折磨人的小妖精~ 自己看代码吧~ import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.awt.print.*; import...

具体为打印table中的内容,而不是整个页面。
哪里能找到相关控件?

|
真是些折磨人的小妖精~
自己看代码吧~

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.print.*;
import javax.swing.table.*;
import java.sql.*;
import java.awt.geom.*;


public class Frame2 extends JFrame implements Printable{
  JButton jButton1 = new JButton();
  Process pr;
  JPopupMenu jPopupMenu1 = new JPopupMenu();
  JCheckBoxMenuItem jCheckBoxMenuItem1 = new JCheckBoxMenuItem();
  BorderLayout borderLayout1 = new BorderLayout();
  JScrollPane jScrollPane1 = new JScrollPane();
  JTable jTable1 = new JTable(10,5);
  JSplitPane jSplitPane1 = new JSplitPane();
  TJPanel jPanel1 = new TJPanel();
  JLabel jLabel1 = new JLabel();
  class TJPanel extends JPanel{
    public TJPanel(){
      this.setOpaque (true);
    }
    public void paint(Graphics g){
      printTable((Graphics2D)g,jTable1);
    }
  }

  public Frame2() {
    try  {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }

  private void jbInit() throws Exception {
    jButton1.setText("jButton1");

    jButton1.addActionListener(new java.awt.event.ActionListener() {

      public void actionPerformed(ActionEvent e) {
        jButton1_actionPerformed(e);
      }
    });
    jCheckBoxMenuItem1.setText("dff");
    this.getContentPane().setLayout(borderLayout1);
    jLabel1.setOpaque(true);
    jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
    jLabel1.setHorizontalTextPosition(SwingConstants.CENTER);
    jLabel1.setText("jLabel1");
    this.getContentPane().add(jSplitPane1, BorderLayout.CENTER);
    this.getContentPane().add(jButton1, BorderLayout.SOUTH);
    this.getContentPane().add(jLabel1, BorderLayout.NORTH);
    jSplitPane1.add(jScrollPane1, JSplitPane.RIGHT );
    jSplitPane1.add(jPanel1, JSplitPane.LEFT );
    jScrollPane1.getViewport().add(jTable1, null);
    jPopupMenu1.add(jCheckBoxMenuItem1);
    this.addWindowListener(new WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent
                event) {
                Object object = event.getSource();
                if (object == this)  System.exit(0);
            }
    });
    this.setSize (400,300);
    jSplitPane1.setDividerLocation(200);
    jTable1.setGridColor (Color.black );
    
  }

  void jButton1_actionPerformed(ActionEvent e) {

    PrinterJob job = PrinterJob.getPrinterJob();
    // Ask user for page format (e.g., portrait/landscape)
//    PageFormat pf = job.pageDialog(job.defaultPage());


    // Create a landscape page format
    PageFormat landscape = job.defaultPage();
    landscape.setOrientation(PageFormat.LANDSCAPE);
    // Set up a book
    Book bk = new Book();
    bk.append(this, job.defaultPage());
    // Pass the book to the PrinterJob
    job.setPageable(bk);
    // Put up the dialog box
    if (job.printDialog()) {
        // Print the job if the user didn't cancel printing
        try { job.print(); }
            catch (Exception exc) { exc.printStackTrace (); }
    }

  }
  public int print(Graphics g, PageFormat pf, int pageIndex)
  throws PrinterException {
      RepaintManager rp = RepaintManager.currentManager (this);
      boolean doubleBufferingEnable = rp.isDoubleBufferingEnabled ();
      rp.setDoubleBufferingEnabled (false);
      this.print(g.create((int)pf.getImageableX (),(int)pf.getImageableY (),(int)pf.getImageableHeight (),(int)pf.getImageableWidth ()));
      rp.setDoubleBufferingEnabled (doubleBufferingEnable);
      return Printable.PAGE_EXISTS;
  }

  public void paint(Graphics g){
    super.paint(g);

  }

  public void printTable(Graphics2D g,JTable table){
    JTableHeader header = table.getTableHeader ();
    int header_height= header.getHeight ();
   try{
    g.setPaint (Color.white );
    g.fill(new Rectangle2D.Double(0, 0,640,480));
    BasicStroke back =(BasicStroke) g.getStroke ();
    int width = table.getWidth ();
    int height = table.getHeight ();
    g.setPaint (Color.black);
    g.setStroke (new BasicStroke(2.0f));
    g.drawRect(0,0,width,height+header_height);
    g.setStroke (back);

    int column_count = header.getColumnModel().getColumnCount ();
    TableColumnModel columnModel=header.getColumnModel ();
    int x=0;
    int y=20;
    FontMetrics fm = g.getFontMetrics ();
    Font f = g.getFont ();
    int size = f.getSize ();
        
    for(int i=0;i

    
 
 

您可能感兴趣的文章:

  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 各位打印过PDF文档吗?我打印的时候,经常打出乱码来,比如don't就会变成乱码,还有其它非英文字符也会变成乱码,有解决方法吗?
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 一用打印机。。system进程就占用cpu100%,大家知道是什么原因? 怎么解决?
  • redhat7.3安装网络打印机,,解决即给分!!!
  • 请教高手:在基于Java的三层分布式结构应用中的打印的解决方案(套打)
  • jsp/servlet开发网站,客户端打印解决方案探讨!
  • response.getWriter().write()向前台打印信息乱码问题解决
  • 用JSP构建营销业务系统,报表打印怎解决
  • 请问:哪位高人有做过大批量数据打印的代码?能否提供预览功能的实现?分我不在乎,您开个口,只求能解决问题
  • 请问在B/S结构的软件中,浏览器中报表的打印和预览有没有什么好的解决方案?我用的是PHP和JSP!
  • <<java编程思想>>的一道练习题???写一个程序,打印出从命令行获取的三个自变量?解决即结帖
  • JSP 报表打印的一种简单解决方案
  • 嵌入式 linux开发中,加入网络通信代码后,ARM9启动后在超级终端打印出错误信息,请帮忙解决!谢谢
  • 弱弱得问一下:linux下gcc编程printf打印不出汉字,怎么解决?
  • 用JavaBean或Servlet能生成Excel文件用于网上打印吗,如何解决?
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 奇怪,怎么“已解决”问题只有4页(10/17日之后的),以前的已解决问题到哪里看?
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 硬盘分区后出现的问题,急待解决!!问题解决马上给分。
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 解决多级索引速度慢的问题可否像解决多级页表那样使用TLB?
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • 呵呵,前段时间Ubuntu服务器版的问题总算解决了,解决方法就是重新安装桌面版-_-!
  • vs2010下禁用vmware的方法以及解决vmware插件导致vs2010变慢的问题
  • 问发这问题"arprequest : Invalid argument"的朋友,你的问题解决了吗?
  • Linux下时钟同步问题:Clock skew detected原因分析及解决方法
  • 现在在公司遇到一个解决不了的页面缓存问题,在线等到下班,谁解决谁100分
  • c/c++服务器程序内存泄露问题分析及解决
  • linux下的vi中的乱码问题(急急急,在线等待!!!!!!,解决问题给高分)
  • Linux 下c++开发error while loading shared libraries问题解决
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • secureCRT下Linux终端汉字乱码解决方法
  • VS2005解决方案管理器中不显示解决方案节点的解决办法
  • window.onload事件覆盖掉body onload事件(window.onload和html body onload事件冲突)解决办法
  • 有高手能破解RAR的密码吗,至今没有找到人能解决?(先只给10分意思意思,若解决,至少给解决的人500分!说话算话!)
  • andriod中UIScrollView无法正常滚动的解决方法
  • 解决 select 挡住div的解决方法
  • windows server2008上PowerBuilder程序系统错误解决方法
  • 解决!解决!求助如何安装多系统!
  • Linux/CentOS下的CST和UTC时间的区别以及不一致的解决方法
  • Liunx命令tar压缩出现如下错误该怎么解决?急需解决!感谢
  • 安装hadoop时出现内存不够及其它一些常见的hadoop错误解决办法
  • 求数据库解决方案===求数据库解决方案
  • 多jdk环境下安装多个tomcat冲突解决配置方法
  • MYSQL安装时解决要输入current root password的解决方法
  • linux/centos安装nginx常见错误及解决办法
  • 解决oracle用户连接失败的解决方法
  • 感觉java胜任大型企业级的任务绰绰有余了,可是面对一些小些企业的解决方案听的并不是很多,所以我希望听听各位的看法(如果实际解决过这
  • 今年广东省中等职业技术学校技能大赛的题目(不要小看),网上查了很久,没有解决办法;求高手解决。
  • 急需要解决,请兄弟们帮一把,解决后热心的网友必有重谢(送分)
  • 特急!!议论者有分,解决者追加。关于数据误格式化,在线等待。解决马上结帐
  • 数据同步和复制解决方案 SymmetricDS


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3