2

我有一个奇怪的难题。我目前正在尝试为我正在处理的 Eclipse 项目制作一个可运行的 Jar,其中有许多 JTextField 和 JFormattedTextField 都很好地排列在 JPanel 中。然后我将这些JPanel 打印出来,使用iText 的漂亮PdfWriter。

问题是这样的:在 Eclipse 中,这打印得很好。当我将项目导出到可运行的 jar 中时,我得到以下信息:

我的问题

所有这些黑色矩形都是我的 JTextField 和 JFormattedTextField 所在的位置。

有谁知道可能是什么原因造成的?这就是我打印东西的方式,记住,它在 Eclipse 中工作,但在导出为可运行 jar 时不能:

private void print() throws DocumentException, IOException {
    Document document = new Document(PageSize.LETTER, 0, 0, 0, 0);
    File file = new File(System.getProperty("user.home") + File.separator
            + "Desktop" + File.separator + "temp.pdf");
    if (!file.exists()) {
        file.createNewFile();
    }
    PdfWriter writer = PdfWriter.getInstance(document,
            new FileOutputStream(file));
    document.open();
    PdfContentByte contentByte = writer.getDirectContent();
    int x = (int) document.getPageSize().getWidth() / 2 - 250;
    int y = (int) document.getPageSize().getHeight() - 375;
    for (int i = 0; i < jobs.size(); i++) {
        jobs.get(i).setFocusable(false);
        contentByte.moveTo(0, y + 235);
        contentByte.lineTo(document.getPageSize().getWidth(), y + 235);
        contentByte.closePathStroke();
        y += 5;
        PdfTemplate template = contentByte.createTemplate(600, 250);
        @SuppressWarnings("deprecation")
        Graphics2D g2 = template.createGraphics(600, 250);
        jobs.get(i).print(g2);
        g2.dispose();
        contentByte.addTemplate(template, x, y);
        y -= 105;
        jobs.get(i).setFocusable(true);
    }
    contentByte.moveTo(0, y + 235);
    contentByte.lineTo(document.getPageSize().getWidth(), y + 235);
    contentByte.closePathStroke();

    y = 25;
    PdfTemplate template = contentByte.createTemplate(600, 25);
    @SuppressWarnings("deprecation")
    Graphics2D g2 = template.createGraphics(600, 25);
    total.setFocusable(false);
    totalPanel.setOpaque(false);
    totalPanel.print(g2);
    g2.dispose();
    contentByte.addTemplate(template, x - 65, y);
    total.setFocusable(true);
    totalPanel.setOpaque(true);

    document.close();
}

感谢您所有的帮助!

4

0 回答 0