要纯JAVA实现,其他语言我不会,出问题了就死了。我做的是一个POS终端装机申请表的一个Frame,界面和其他功能都已经实现了,现在就只剩下一个“打印”按钮的功能实现。
在界面上有很多的JLable(随后紧跟JTextField)--2者对应--JTextField,几个JCheckBox。我现在能连接到打印机,但是打印的内容、数量和格式什么的都还不会实现。打印的要求:
    (1)(前半部分)JLabel的内容是纸张原本就已经有了的,而界面上的JTextField中填入的内容要求打印到纸张对应处的JLabel后面。
    (2)(后半部分)全是固定的内容,但是格式很多。可以认为全是JLabel来处理。
    
请教高手这个问题怎么处理?我上网搜了好多,看到一段很好的代码,但是看了后自己的还是不会实现。
这是那个网址:http://www.ibm.com/developerworks/cn/java/l-javaprint/index.html

解决方案 »

  1.   

    你如果不想自己写的话也可以用开源软件,这里推荐iReport。
    使用说明、软件下载等见网址:
    http://blog.csdn.net/jemlee2002/archive/2004/10/05/125107.aspx
    具体的,在java程序中如果调用,通过以下几句就够了:
    plDataSource pls = new plDataSource(); //plDataSource 类用来获取需要显示的数据
    Map<String,String> parameters = new HashMap<String, String>();
    reportFile = new File(context.getRealPath("/A1/B1/jasper/Plreport.jasper")); //指定jasper文件路径
    parameters = pls.getReportMap_private(request);  //获取数据
    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());
    jasperPrint = JasperFillManager.fillReport(jasperReport,parameters, pls);
      

  2.   

    我现在实现的方法打印出来的东西好像是和测试打印内容是一样的,不知道为什么跑上去了。
    哪位高手帮我看看代码哪里错了:以下是打印用的主要代码
    //打印的按钮
    button.addActionListener(new ActionListener() {
    public void actionPerformed(final ActionEvent e) {
    PrinterJob job = PrinterJob.getPrinterJob();
    PageFormat pf = job.defaultPage();
    job.setPrintable(PosApplyTable.this,pf);

    job.setCopies(1);
    try {
    job.print();
    } catch (PrinterException e1) {
    job.cancel();
    e1.printStackTrace();
    }
    }public int print(Graphics g, PageFormat pf, int page)throws PrinterException { 
            Graphics2D g2 = (Graphics2D)g;
    g.setColor(Color.GREEN);  
            PAGES++;
            if(PAGES>1){   
                return   Printable.NO_SUCH_PAGE;     
            } else{
             drawCurrentPageText(g2, pf, page);      
             return   Printable.PAGE_EXISTS;  
            }
    }

     private void drawCurrentPageText(Graphics2D g2, PageFormat pf,int page) {   
     
         g2.drawString(outerCode.getText(),133, 24);   
         g2.drawString(innerCode.getText(),400, 28);
         g2.drawString(shName.getText(),133 , 52);
         g2.drawString(shortName.getText(), 400, 52);
         g2.drawString(loginAddress.getText(), 133, 76);
         g2.drawString(installAddress.getText(), 133, 100);
         g2.drawString(stock.getText(), 133, 124);
         g2.drawString(userName.getText(), 307, 124);
         g2.drawString(phone.getText(), 454, 124);
         g2.drawString(area.getText(), 133, 148);
         g2.drawString(idCode.getText(), 400, 148);
         g2.drawString(license.getText(), 133, 172);
         g2.drawString(bankName.getText(), 400, 172);
         g2.drawString(registerCode.getText(), 133, 196);
         g2.drawString(account.getText(), 400, 196);
         g2.drawString(openName.getText(), 133, 220); }