codice:
// java versione 1.6
bottone.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
PrinterJob pj=PrinterJob.getPrinterJob();
pj.setPrintable(frame1.this); <-----
boolean swOk = pj.printDialog();
if (swOk) {
try{
pj.print();
}catch (Exception PrintException) {
JOptionPane.showMessageDialog(frame1.this , "errore", "stampa", JOptionPane.ERROR_MESSAGE);
}
}
}
});
Il frame chiamante è frame1; in caso di errore compare un messaggio di dialogo che segue il chiamante.
Che significa "segue il chiamante" ?
Significa che io posiziono il frame dove voglio io nel video, poi premo un bottone e in caso di errore il messaggio di dialogo è esattamente in mezzo al frame chiamante.
Funziona benissimo con i messaggi di dialogo ma non con le stampe di dialogo, cioè prima di stampare compare una finestra che permette di selezionare una stampante ed altre proprietà, ma questa ultima finestra non segue il chiamante, ciò è strano perchè
pj.setPrintable(frame1.this); // qui c'è frame1.this ma NON segue il chiamante
JOptionPane.showMessageDialog(frame1.this, "errore", "stampa", JOptionPane.ERROR_MESSAGE); // qui c'è frame1.this e ma qui segue il chiamante
frame1 potrebbe essere ubicata dovunque nel video ma il dialogo stampante sta tut'altro posto e alla lunga mi viene il torcicollo.
Qualcuno sa come è questa storia ?