相关疑难解决方法(0)

如何打印单个JPanel的内容?

我有JPanel两个带图片的标签.我需要打印这些内容JPanel.请帮帮我.我怎么才能打印这个JPanel内容,因为我也有不同的组件,JFrame但我只需要打印 JPanel.

谢谢.

java printing swing

21
推荐指数
2
解决办法
3万
查看次数

打印大型Swing组件

我有一个Swing表单,在JScrollPane中有一个自定义表(它只是一个JPanel,而不是JTable子类),我试图让它打印出来.如果我只是将整个框架发送到打印机,滚动窗格会切断,如果我将框架的大小调整为滚动窗格内容的大小,某种内部屏障会阻止JFrame变得超过1100像素高.

另一种方法是创建对话框的内容窗格而不将其附加到根JFrame,因为JPanel的大小在这种情况下不受限制.但是为了让组件自行调整并调整到适当的大小,我似乎需要使面板可显示,这意味着至少将它添加到JFrame并调用JFrame.pack(),但同样,1100像素限制回来了.

这是我打印组件的代码:

public static void print(final Component comp) {
    final float SCALE = .5f;
    PrinterJob job = PrinterJob.getPrinterJob();
    job.setPrintable(new Printable() {
        public int print(Graphics g, PageFormat pf, int page)
            throws PrinterException
        {
            if (page * pf.getImageableHeight() >= SCALE * comp.getHeight())
                return NO_SUCH_PAGE;
            ((Graphics2D)g).translate(pf.getImageableX(), pf.getImageableY()
               - page * pf.getImageableHeight());
            ((Graphics2D)g).scale(SCALE, SCALE);
            comp.printAll(g);
            return PAGE_EXISTS;
        }
    });
    if (job.printDialog())
        try { job.print(); }
        catch (PrinterException ex) {}
}
Run Code Online (Sandbox Code Playgroud)

如果我这样做,组件的大小为零:

JPanel c = createPanel(); // This JPanel has a JScrollPane in it …
Run Code Online (Sandbox Code Playgroud)

java printing swing

7
推荐指数
2
解决办法
7955
查看次数

Printable 打印 BufferedImage 的大小不正确

所以是的,我在这里尝试的是打印 BufferedImage,一切正常,直到您看到结果。结果太大了,印刷品太大了,并且在印刷时由于某种原因不会放大所有东西。我曾经((MM * DPI)/25,4)根据纸张大小从毫米计算正确的像素长度,但是当我打印它时它很大。

这是我为它编写的代码:

package frik.main;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;

import java.awt.event.*;

import javax.swing.*;
import frik.data.Config;
import frik.utils.ImgUtil;

public class Previewer implements Config, Printable, ActionListener{

    private JFrame Frame;
    private JPanel ImagePanel;
    private JLabel PicLabel;
    private JButton PrintButton;
    private static BufferedImage before;
    private static boolean Scaled;

    public Previewer(BufferedImage Image, boolean scaled){
        this.before = Image; …
Run Code Online (Sandbox Code Playgroud)

java printing swing bufferedimage resize

2
推荐指数
1
解决办法
3423
查看次数

标签 统计

java ×3

printing ×3

swing ×3

bufferedimage ×1

resize ×1