有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何水平打印jframe或赋予它打印属性?

这是我正在使用的代码,我需要知道我可以在哪里更改这里的属性,因为在这里,如果我运行它,它会向我发送打印部分,您可以在其中选择打印机或赋予它属性,我需要它水平,默认情况下,它会垂直

public int print(Graphics grap, PageFormat pagFor, int index) throws 
PrinterException {

if (index > 0) 
 {

        return NO_SUCH_PAGE;
    }
    // pagFor.setOrientation(0);

    pagFor.setOrientation(PageFormat.LANDSCAPE);
    Graphics2D hub = (Graphics2D) grap;

    hub.translate(pagFor.getImageableX() + 5, pagFor.getImageableY());
    hub.scale(0.5, 0.5);

    jPanel1.printAll(grap);

    return PAGE_EXISTS;
}

共 (1) 个答案

  1. # 1 楼答案

    在开始打印之前,需要更改方向

    PrinterJob pj = PrinterJob.getPrinterJob();
    pj.setJobName("My super-dup awesome print job");
    
    PageFormat pf = pj.defaultPage();
    pf.setOrientation(PageFormat.LANDSCAPE);
    pf = pj.validatePage(pf);
    
    pj.setPrintable(..., pf);
    
    if (!pj.printDialog()) {
        return;
    }
    try {
        pj.print();
    } catch (PrinterException ex) {
        ex.printStackTrace();
    }
    

    注意:用户可能会在打印对话框中更改方向,您只需要在Printable中处理它