Как включить альбомную ориентацию в PrinterJob.pageDialog - PullRequest
1 голос
/ 18 марта 2011

Я хочу иметь возможность установить формат страницы в 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);
    }
}

1 Ответ

0 голосов
/ 09 апреля 2011

Следуя советам Трашгода, я публикую свои выводы в качестве ответа на этот вопрос, чтобы мы могли закончить этот вопрос.

OK. Я получил это отсортировано. Спасибо каракурикодеру. Ваша информация приведет меня к решению. Проблема присутствует всегда, когда мой принтер по умолчанию установлен на MS Office Image Writer. Это хорошо, когда я выбрал любой другой. Теперь мне интересно, есть ли у других людей такая же проблема? А может объяснение почему? Черт MS принтер, я потратил много часов на копание после этой проблемы. Если честно, мне все еще нравится этот принтер. :) У меня было по умолчанию, так как недавно я тестировал множество API Java, и полезно посмотреть, как выглядят документы при печати в файл. Большое спасибо.

Up. Я вижу, это зависит от настроек принтера. Я немного поиграл с ними, но все еще не могу настроить оба варианта для формата страницы, который установлен в портретном режиме.

Единственное рабочее решение - не устанавливать принтер MS по умолчанию.

Удачи всем, Боро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...