作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要在 PrinterJob.pageDialog 中设置页面格式的选项,唯一缺少的是更改页面方向,因为横向模式的单选按钮被禁用。
问题是我不知道如何在此对话框中启用代表横向模式的单选按钮。仅当在打开对话框之前将方向模式设置为横向时才启用它。这对我来说不是一个好的解决方案,因为当用户再次打开对话框时,我总是想向用户显示他之前的选择,同时给他更改它的选项。
我真的很想避免自己构建一个对话框,因为这看起来很完美。
我听说这可能是仅在 Windows 计算机上存在的问题。如果其他平台上也出现这种情况,请告诉我。
提前致谢。
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);
}
}
最佳答案
根据垃圾神的建议,我将发布自己的发现作为此问题的答案,以便我们可以完成此问题。
好的。我已经整理好了感谢 karakuri 编码器。您的信息引导我找到解决方案。当我将默认打印机设置为 MS Office Image Writer 时,问题总是存在。当我有其他选择时就很好了。现在我想知道其他人是否也有同样的问题?也许可以解释一下为什么?该死的MS打印机,我浪费了好几个小时来解决这个问题。说实话我还是很喜欢这款打印机的。 :) 我把它作为默认值,因为最近我一直在测试大量 Java API,它对于查看文档打印到文件时的外观很有用。非常感谢。
向上。我发现这取决于打印机设置。我玩了一会儿,但仍然无法将其设置为具有设置为纵向的页面格式的两个选项。
唯一可行的解决方案是,不要将 MS 打印机设置为默认打印机。
祝大家好运,博罗。
关于java - 如何在 PrinterJob.pageDialog 中启用横向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5354337/
我是一名优秀的程序员,十分优秀!