RISOLTO Listener per gestire un printDialog in Java

Stato
Discussione chiusa ad ulteriori risposte.

Scripta14

Nuovo Utente
95
8
Buongiorno a tutti,

mi servirebbero dei suggerimenti o l'indicazione di documentazione approfondita, se possibile con esempi per gestire i listener di una printdialog. Ho già dato un'occhiata online, ma quello che ho trovato raramente mostrava come gestire gli eventi.

Codice:
PrinterJob pj=PrinterJob.getPrinterJob();
                     PrintService ps=pj.getPrintService();
                                          
                     if(pj.printDialog()) {
                         try {
                            pj.print();
                        Stampa.printToServer(rcd, ps.getName());
                        } catch (PrinterException e) {
                            // TODO Auto-generated catch block
                            System.out.println("errore di stampa "+e.getMessage());
                        }
                     }
1550660868687.png

Il codice qui sopra funziona come potete vedere dall'immagine, ma mi servirebbe capire come gestire i listener per le varie opzioni della finestra di stampa. Sostanzialmente quello che mi serve è configurare le varie impostazioni della finestra di stampa intercettando le varie opzioni per un utilizzo di queste informazioni altrove.

Grazie in anticipo a tutti.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,210
1,846
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed

Scripta14

Nuovo Utente
95
8
Si, ho dato un'occhiata anche a quel materiale, ma non mi mostra un esempio di ciò che sto cercando. Sostanzialmente mi serve trovare un esempio di come catturare la modifica del nome della stampante, oppure quale range di pagine e stato impostato.
Se qualcuno mi può dare qualche spunto su come gestire la casistica...
Grazie
 

Mursey

Super Moderatore
Staff Forum
Utente Èlite
8,191
5,631
Se qualcuno mi può dare qualche spunto su come gestire la casistica...
Penso sia questo (dalla doc linkata sopra):
The page setup dialog is initialized using the parameter passed to pageDialog. If the user clicks the OK button in the dialog, the PageFormat instance will be created in accordance with the user's selections, and then returned. If the user cancels the dialog, pageDialog returns the original unchanged PageFormat.

Quindi pare che tu possa usare l'istanza PageFormat ritornata...
 

Scripta14

Nuovo Utente
95
8
Grazie per la risposta. Prima ancora di gestire il range delle pagine, mi servirebbe capire come gestire l'evento che mi permette di associare una stampante diversa da quella che java rileva come predefinata.
Una cosa del tipo:
Codice:
JComboBox comboBox = new JComboBox();
        comboBox.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            }
        });
        panel_1.add(comboBox);
Questo è ovviamente un codice di esempio. Ma nel mio caso specifico come faccio ad avere una combobox dalla quale modificare la Stampante e conseguentemente catturare l'evento? Nell'interfaccia grafica (printDialog) ho una combobox, ma non ho idea su come richiamare addActionListener.
Grazie per l'aiuto.
Post unito automaticamente:

Buongiorno a tutti. Ho trovato una soluzione che per ora mi soddisfa e volevo condividerla con la speranza che possa servire anche ad altri.
Codice:
                  PrinterJob pj=PrinterJob.getPrinterJob();
//                PrintRequestAttributeSet attributes= new HashPrintRequestAttributeSet();
//                attributes.add(new PageRanges(1,pages));
                
                if(pj.printDialog()) {
                    
                    ps=pj.getPrintService();
                    System.out.println("nome stampante modificata "+ps.getName()); //funziona
                    pj.print();
                    Stampa.printToServer(Nomefile da stampare, ps.getName());
                    
                
                    }
Ora vi chiedo se riuscite a darmi una mano. Avrei bisogno di ricavare da quanto scritto sopra il nome della stampante, il nome del driver, il nome della porta della stampante e come il foglio è orientato. Il nome della stampante l'ho ricavato tramite il pj.getPrintService().getName(), ma gli altri non riesco a trovare il modo. Nella documentazione non riesco a trovare nulla.
Spero qualcuno mi potrà aiutare perchè non so dove sbattere la testa.
Grazie in anticipo a tutti.
 
Ultima modifica:

Scripta14

Nuovo Utente
95
8
Qualcuno riesce a darmi una mano? Mi servirebbe capire come si gestisce questo tipo di interfacce. Se qualcuno riesce a indicarmi anche della documentazione il più possibile chiara mi farebbe una cortesia.

Grazie a tutti
 

Scripta14

Nuovo Utente
95
8
Alla fine ho usato la sequenza di codice che ho scritto sopra, mi serviva solo recuperare il nome della stampante selezionata.
Se qualcuno ha altri spunti può integrare questo thread, altrimenti si può chiudere come risolto. Grazie a tutti.
 
  • Mi piace
Reazioni: Mursey
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!