java - JPanel 字体与打印输出不匹配

标签 java swing printing fonts

我想通过热敏打印机打印我的 jpanel。但是当我打印面板时,输出的字体与面板字体不匹配。面板有 JLabels 和图像。我已经发送了下面的代码。如果您能提供帮助,我将非常感激!

public static class Printer implements Printable {
    final Component comp;

    public Printer(Component comp) {
        this.comp = comp;
    }

    @Override
    public int print(Graphics g, PageFormat format, int page_index)
            throws PrinterException {
        if (page_index > 0) {
            return Printable.NO_SUCH_PAGE;
        }

        // get the bounds of the component
        Dimension dim = comp.getSize();
        double cHeight = dim.getHeight();
        double cWidth = dim.getWidth();

        // get the bounds of the printable area
        double pHeight = format.getImageableHeight();
        double pWidth = format.getImageableWidth();

        double pXStart = format.getImageableX();
        double pYStart = format.getImageableY();

        double xRatio = pWidth / cWidth;
        double yRatio = pHeight / cHeight;

        Graphics2D g2 = (Graphics2D) g;


        g2.translate(pXStart, pYStart);
        g2.scale(xRatio, yRatio);
        comp.paint(g2);

        return Printable.PAGE_EXISTS;
    }
}

最佳答案

您必须为所有子组件设置所需的字体。将字体设置为所有标签,因为它们不使用父级的字体。

关于java - JPanel 字体与打印输出不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20325007/

相关文章:

Windows 中的 JavaFx 应用程序未正确显示文本

java - 无法在 ActionListener 中初始化类...请帮忙!

java - 通过 java Swing 中的循环更新 Jlabel 文本?

image - 计算图像的DPI

java - 将所有java输出写入txt文件中

java - WebDriverWait 在 Selenium 4 中已弃用

java - 在对接口(interface)类型列表中的实例进行排序时,如何使用 Java 中的比较器?

java - 如何在 Java 中使用流从两个数组创建映射?

java - 如何将 JWindow 添加到 NetBeans 项目并使用 GUI 编辑器进行编辑?

qt - 我需要将 QGraphicsScene 打印到实际(英寸/毫米)比例