LINUX.ORG.RU

JAVA как вернуть статус принтера.


0

1

Всем привет. Сразу скажу что не JAVA-программист поэтому прошу сильно не пинать. Есть код :

class Print1 {

public void PrintJobManagment(DocPrintJob job) {
// Add a listener to the print job
job.addPrintJobListener(new PrintJobAdapter() {
            private int iResult;
            @Override
public void printDataTransferCompleted(PrintJobEvent pje) {
// The print data has been transferred to the print service
System.out.println("-> 1");
}
            @Override
public void printJobCanceled(PrintJobEvent pje) {
// The print job was cancelled
System.out.println("-> 2");
setStatus(2);
}
            @Override
public void printJobCompleted(PrintJobEvent pje) {
// The print job was completed
System.out.println("-> 3");
setStatus(3);
}

            @Override
public void printJobFailed(PrintJobEvent pje) {
System.out.println("-> 4");
setStatus(4);
}
            @Override
public void printJobNoMoreEvents(PrintJobEvent pje) {
System.out.println("-> 5");
setStatus(5);
}

            @Override
public void printJobRequiresAttention(PrintJobEvent pje) {
System.out.println("-> 6");
setStatus(6);
}
void setStatus(int iStatus) {
synchronized(Print1.this){
iResult = iStatus;
System.out.println("IRESULT: " + iStatus);
Print1.this.notify();
}
}
});
}
public static void main(String[] argc) {

}
}
Я не могу понять что надо писать в методе main что бы заставить все это возвращать статус принтера?

★★★★★

Адский ад. Если вы не Java-программист то нафига пишете Java код

Во-первых:

public void PrintJobManagment(DocPrintJob job) {}

если это конструктор, то и именоваться он должен как класс i.e.

public void Print1(DocPrintJob job) {}

если это метод который инсталлирует листенер к заданной Job, то соответетсенно, должен начинаться со строчной буквы:

public void printJobManagment(DocPrintJob job) {}

Во-вторых: нафига в setStatus synchronized блок, который вообще непонятно что делает. Еще и notify зачем то. В каком примере вы это интересно взяли такое?

В третих: ответ на ваш вопрос - в методе main вам нужно получить DocPrintJob и соответственно сконструировать экземпляр вашего класса Print1, передав в конструктор ваш DocPrintJob

Ну и в четвертых самое главное: наличие этих events на PrintJob, зависит от реализации PrintService - т.е. PrintService вполне может и не извещать листенеры обо всех events, либо может вообще не извещать ни о чем.

grassmeister
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.