繁体   English   中英

如何在PrinterJob.pageDialog中启用横向方向

[英]How to enable landscape orientation in PrinterJob.pageDialog

我想拥有在PrinterJob.pageDialog中设置页面格式的选项,唯一缺少的是更改页面方向,因为横向模式的单选按钮已禁用。

问题是我不知道如何在此对话框中启用代表横向模式的单选按钮。 仅在打开对话框之前将方向模式设置为横向时才启用。 这对我来说不是一个好的解决方案,因为我总是希望在再次打开对话框时向用户显示他先前的选择,同时给他选择更改对话框的选项。

我真的很想避免自己创建对话框,因为它看起来很完美。

请让我知道它是否也在其他平台上发生。

提前致谢。



import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.print.PageFormat;
import java.awt.print.PrinterJob;
import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.KeyStroke;

public class PrintDialogSSCCE extends JFrame
{
    private static final long serialVersionUID = 1L;
    private PageFormat pageFormat;

    public PrintDialogSSCCE()
    {
        super();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        PrinterJob pj = PrinterJob.getPrinterJob();
        pageFormat = pj.defaultPage();
//      pageFormat.setOrientation(PageFormat.LANDSCAPE);
        JMenuBar mb = new JMenuBar();
        JMenu file = new JMenu("File", true);
        file.add(new FilePageSetupAction()).setAccelerator(
                KeyStroke.getKeyStroke(KeyEvent.VK_P, Event.CTRL_MASK
                | Event.SHIFT_MASK));
        mb.add(file);
        setJMenuBar(mb);
    }

    public class FilePageSetupAction extends AbstractAction
    {
        private static final long serialVersionUID = 1L;

        public FilePageSetupAction()
        {
            super("Page setup...");
        }
        @Override
        public void actionPerformed(ActionEvent ae)
        {
            PrinterJob pj = PrinterJob.getPrinterJob();
            pageFormat = pj.pageDialog(pageFormat);
        }
    }

    public static void main(String[] args)
    {
        PrintDialogSSCCE pd = new PrintDialogSSCCE();
        pd.setSize(300, 300);
        pd.setVisible(true);
    }
}

采纳垃圾桶的建议,我将发布我自己的发现作为对这个问题的答案,以便我们完成这一过程。

好。 我把它整理好了。 谢谢karakuricoder。 您的信息将我引向解决方案。 当我将默认打印机设置为MS Office Image Writer时,总是会出现此问题。 当我选择其他任何方法时都很好。 现在我想知道其他人是否也有同样的问题? 也许是为什么的解释? 该死的MS打印机,在解决此问题后,我浪费了好几个小时进行挖掘。 老实说,我仍然喜欢这台打印机。 :)我将它作为默认值,因为最近我已经测试了许多Java API,查看打印到文件时文档的外观很有用。 非常感谢。

起来 我看到这取决于打印机设置。 我和他们玩了一段时间,但仍无法将其设置为将页面格式都设置为纵向的两个选项。

唯一有效的解决方案是不要将MS打印机设置为默认打印机。

祝你好运,博罗。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM