Скрытие «Печать в файл» в диалоговом окне печати Java - PullRequest
4 голосов
/ 20 мая 2010

Я поддерживаю это приложение Swing с опцией «печать». Пользователи не должны каким-либо образом взаимодействовать с базовой файловой системой, но в диалоговом окне печати предлагается «печать в файл» как один принтер, что, конечно, позволяет выбрать каталог и файл из файловой системы.

Существует ли безболезненный способ переопределить / изменить диалоговое окно печати, чтобы скрыть принтер «в файл» из этого диалогового окна? Я понимаю, что API позволит мне сделать это по частям, но я бы предпочел не создавать заново большую часть диалогового интерфейса и функциональности, чтобы сделать это.

Ответы [ 2 ]

4 голосов
/ 20 мая 2010

Из форумов Sun (http://72.5.124.102/thread.jspa?messageID=10931926#10931926),, хотя вы не можете скрыть кнопку, похоже, что вы можете захватить событие ее выбора и выдать исключение:

DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE; 
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();

PrintService[] printerArray = dialogPrinters.toArray(new PrintService[dialogPrinters.size()]);

// call print dialog and get print attributes
PrintService selectedPrinter = javax.print.ServiceUI.printDialog(null, 200, 200, printerArray, defaultPrintService, flavor, pras);  

// check if "print-to-file" option used
if (pras.get(Destination.class) != null)
{
    // here we deny to perform the save into a file
    JOptionPane.showMessageDialog(CMSJRViewer.this, getBundleString("error.printing"));
    throw new PrintException("Print to file option not allowed. Action aborted!");
}
else
{
    ...
}
0 голосов
/ 20 мая 2010

Из того, что я вижу в классах реализации абстрактных PrinterJob , нет, это не представляется возможным.

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