ServiceUI

ServiceUI

Java Print Service API를 통해 조회된 인쇄 서비스를 탐색(browse)하기 위한 그래픽 사용자 대화상자를 제공하는 UI 편의 메서드 모음 클래스예요.

출처: Java API Reference

본문

javax.print 패키지에 속하는 클래스로, java.lang.Object를 상속해요.

대화상자는 사용자에게 계속/취소 옵션으로 동작하는 표준 패턴을 따르면서, 사용자가 사용할 인쇄 서비스를 선택하고 용지 크기, 복사 매수 같은 선택지를 지정할 수 있게 해요.

대화상자는 해당 인쇄 서비스의 공개 API를 통해 플러그 가능한(pluggable) 인쇄 서비스와 함께 동작하도록 설계됐어요. 인쇄 서비스가 공급업체 확장 기능을 제공하면 Component 탭 패널로 사용자에게 노출될 수 있어요. 이런 확장은 Swing을 사용하고 접근성 API를 지원하는 것이 권장돼요. 확장은 설정을 AttributeSet의 일부로 반환해야 해요.

생성자

public ServiceUI()

ServiceUI를 생성해요.

printDialog

public static PrintService printDialog(
        GraphicsConfiguration gc, int x, int y,
        PrintService[] services, PrintService defaultService,
        DocFlavor flavor, PrintRequestAttributeSet attributes)
    throws HeadlessException

인쇄 서비스(프린터)를 선택하는 대화상자를 사용자에게 보여줘요. 응용 프로그램이 지정한 위치에 표시되고 모달(modal)이에요. 이 대화상자는 호출 스레드를 차단하고 응용 프로그램 모달로 동작해요.

대화상자는 PrintService를 탐색할 때 ServiceUIFactory에서 지연해서 얻은 사용자 지정 UI를 가진 탭 패널을 포함할 수 있어요. 대화상자는 먼저 MAIN_UIROLEJComponent로, 그다음 Panel로 찾으려 해요. ServiceUIFactory가 없거나 일치하는 역할이 없으면 사용자 지정 탭은 비어 있거나 보이지 않아요.

사용자가 대화상자를 OK 하면 선택한 인쇄 서비스를 반환하고, 취소하면 null을 반환해요. 응용 프로그램은 탐색할 인쇄 서비스 배열을 반드시 전달해야 하는데, 배열은 null이 아니고 비어 있지 않아야 해요.

전형적인 기본 사용법은 다음과 같아요.

PrintService[] services = PrintServiceLookup.lookupPrintServices(
    DocFlavor.INPUT_STREAM.JPEG, null);
PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
if (services.length > 0) {
    PrintService service =  ServiceUI.printDialog(null, 50, 50,
        services, services[0],
        null,
        attributes);
    if (service != null) {
        ... print ...
    }
}
  • 파라미터 gc: 화면 선택에 사용됨. null이면 기본 화면
  • 파라미터 x, y: 대화상자 위치(테두리 포함)의 화면 좌표
  • 파라미터 services: 탐색 가능한 서비스 배열. null이면 안 됨
  • 파라미터 defaultService: 처음에 표시할 PrintService
  • 파라미터 flavor: 인쇄할 flavor. null 가능
  • 파라미터 attributes: 입력 시 응용 프로그램이 제공한 초기 설정. null 불가, 비어 있을 수 있음. 출력 시 사용자가 바꾼 설정을 반영해요.
  • 반환값: 사용자가 선택한 인쇄 서비스. 취소하면 null
  • 예외 HeadlessException: GraphicsEnvironment.isHeadless()true를 반환하는 경우
  • 예외 IllegalArgumentException: services가 null이거나 비어 있거나, attributes가 null이거나, 초기 PrintService가 탐색 가능한 서비스 목록에 없는 경우

더 알아보기