标准打印对话框中的Swing:Properties按钮无效(Java 8)

标准打印对话框中的Swing:Properties按钮无效(Java 8),java,swing,printing,awt,Java,Swing,Printing,Awt,下面的代码显示了标准AWT/Swing打印对话框。所有工作正常,但在对话框中单击“属性”按钮不会调用打印机属性对话框 import java.awt.GraphicsConfiguration; import java.awt.GraphicsEnvironment; import java.awt.print.PrinterJob; import java.util.Locale; import javax.print.DocFlavor; import javax.print.DocFla

下面的代码显示了标准AWT/Swing打印对话框。所有工作正常,但在对话框中单击“属性”按钮不会调用打印机属性对话框

import java.awt.GraphicsConfiguration;
import java.awt.GraphicsEnvironment;
import java.awt.print.PrinterJob;
import java.util.Locale;

import javax.print.DocFlavor;
import javax.print.DocFlavor.SERVICE_FORMATTED;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.ServiceUI;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.swing.SwingUtilities;

public class PrintTryout {

    public static void main(String[] args) {
        Locale.setDefault(Locale.ENGLISH);
        SwingUtilities.invokeLater(new PrintTryout()::startUp);
    }

    private void startUp() {
        PrintService[] services = PrintServiceLookup.lookupPrintServices(
                DocFlavor.INPUT_STREAM.JPEG, null);
        PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
        if (services.length > 0) {
            GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment()
                    .getDefaultScreenDevice().getDefaultConfiguration();
            ServiceUI.printDialog(gc, 50, 50,
                    services, services[0],
                    SERVICE_FORMATTED.PAGEABLE,
                    attributes);
        }
    }

    private void startUp2() {
        PrinterJob pj = PrinterJob.getPrinterJob();
        pj.printDialog();
    }
}

如果将调用的方法更改为
startUp2
,则会出现另一个打印对话框,该对话框也有“属性”按钮。这个按钮工作正常:“我获取打印机设置”对话框。这是Java错误还是我出了什么问题?或者它对某些人来说是正确的(我从客户那里得到了这个bug)

我怀疑通过将DocFlavor指定为图像,您是在“强制”页面大小的打印机属性。我一直使用startUp2,所以我不熟悉startUp中的代码。