[英]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.