Ich verwende PrinterJob.printDialog()
, damit der Benutzer einen Drucker auswählt und verschiedene Druckeinstellungen ändern kann.
Der Dialog wird jedoch immer mit dem Standard-Java-Caffeecup-Symbol und nicht mit dem aus meinem Hauptfenster (JFrame) angezeigt.
Wie kann ich das Symbol für diesen Dialog ändern?
Ich verwende den folgenden Code:
%Vor%Normalerweise erbt ein JDialog das Symbol vom "übergeordneten" JFrame, aber in diesem Fall kann ich kein übergeordnetes Fenster für dieses Dialogfeld übergeben oder angeben
Ich benutze Java6
Es scheint, dass a_horse_with_no_name (wie der Rest von uns) mit einem Druckdialog ohne benutzerdefiniertes Symbol blockiert wird. : -)
Auch der Druckdialog von iReport wird mit dem Standard-Kaffeetassensymbol angezeigt. Der Druckdialog verhält sich nicht wie JFileChooser oder JColorChooser. Zum Glück ist es modal.
Wenn Sie das Symbol zu sehr stört, können Sie eine Wrapperklasse erstellen und die Details nach Belieben ausarbeiten.
Java6 API bietet keine Möglichkeit, das Symbol zu ändern. Ich werde eine Weile mit der Kaffeetasse leben und auf die nächste Version des JDK warten, die ein Verhalten wie JFileChooser bieten kann.
Ich habe keine Möglichkeit gefunden, das Symbol zu ändern, aber hier gibt es einen indirekten Weg, es zu entfernen.
Sie müssen einen DialogOwner über die Druckattribute angeben. Dies führt dazu, dass java.awt.Window das Standard-Java-Symbol nicht verwendet.
%Vor%Hoffe das hilft dir jetzt !!
Während ich weiter nach einer Möglichkeit suche, diesen Druckdialog zu positionieren. :)
Ich habe eine Lösung / Abhilfe gefunden, um das Symbol eines Java-Druckdialogs zu ändern ( nicht nativ).
Das heißt, dies funktioniert für einen Druckdialog, der beispielsweise durch sun.print.ServiceDialog
dargestellt wird.
Spielen Sie mit delay
und maxCount
Werten entsprechend Ihren Bedürfnissen. Natürlich gibt es immer Raum für Verbesserungen.
Offensichtlich muss Timer
vor jedem Aufruf von printDialog
gestartet werden. Dies funktioniert z. B. auch, wenn der Timer gestartet wird, bevor JTable.print()
aufgerufen wird, wenn showPrintDialog
ist true
.
Ich bin froh, dass ich seit Jahren eine Lösung für eine unbeantwortete Frage habe :) (zumindest in meinem Projekt).