Java (native) Druckdialog - Symbol ändern

8

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

    
a_horse_with_no_name 29.12.2010, 13:23
quelle

3 Antworten

3

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.

    
Costis Aivalis 29.12.2010, 19:17
quelle
7

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. :)

    
Optimus Prime 16.03.2011 20:15
quelle
1

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.

%Vor%

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).

    
IvanRF 15.05.2016 21:02
quelle

Tags und Links