我想要选择在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);
}
}
答案 0 :(得分:0)
采取trashgod的建议我发布自己的调查结果作为这个问题的答案,所以我们可以完成这个。
行。我把它分类了。谢谢karakuricoder。您的信息引导我找到解决方案。当我将默认打印机设置为MS Office Image Writer时,问题始终存在。我选择其他任何一个都没关系。现在我想知道其他人是否有同样的问题?也许解释为什么?该死的MS打印机,我浪费了几个小时后才解决这个问题。说实话,我还是喜欢这台打印机。 :)我把它作为默认值,因为最近我一直在测试大量的Java API,看看打印到文件时文档的外观很有用。非常感谢。
向上。我看到它取决于打印机设置。我和他们玩了一会儿,我仍然无法将其设置为同时设置为肖像的页面格式。
只有工作解决方案,不要将MS打印机设置为默认值。
祝你好运,博罗。