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

时间:2011-03-18 15:38:03

标签: java printing

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

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

我真的很想避免自己构建一个对话框,因为这看起来很完美。

我听说它可能只是Window机器上的问题。 如果它也出现在其他平台上,请告诉我。

提前致谢。



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);
    }
}

1 个答案:

答案 0 :(得分:0)

采取trashgod的建议我发布自己的调查结果作为这个问题的答案,所以我们可以完成这个。

行。我把它分类了。谢谢karakuricoder。您的信息引导我找到解决方案。当我将默认打印机设置为MS Office Image Writer时,问题始终存在。我选择其他任何一个都没关系。现在我想知道其他人是否有同样的问题?也许解释为什么?该死的MS打印机,我浪费了几个小时后才解决这个问题。说实话,我还是喜欢这台打印机。 :)我把它作为默认值,因为最近我一直在测试大量的Java API,看看打印到文件时文档的外观很有用。非常感谢。

向上。我看到它取决于打印机设置。我和他们玩了一会儿,我仍然无法将其设置为同时设置为肖像的页面格式。

只有工作解决方案,不要将MS打印机设置为默认值。

祝你好运,博罗。