Я хочу иметь возможность установить формат страницы в PrinterJob.pageDialog, и единственное, чего не хватает, это изменить ориентацию страницы, потому что переключатель для ландшафтного режима отключен.
Проблема в том, что я не знаю, как включить этот переключатель, представляющий ландшафтный режим в этом диалоге.Он включается только в том случае, если режим ориентации установлен в альбомную ориентацию перед открытием диалога.Это не очень хорошее решение для меня, так как я хочу всегда показывать пользователю его предыдущий выбор, когда он снова открывает диалоговое окно, давая ему возможность его изменить.
Я действительно хотел бы избежать созданиядиалоговое окно, так как это выглядит идеально.
Я слышал, что это может быть проблема, присутствующая только на машинах Window. Пожалуйста, дайте мне знать, если это происходит и на других платформах.1012 * Заранее спасибо.
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);
}
}