2009-08-03 8 views
1

J'ai utilisé le printComponent qui a été montré dans une autre question. Il fonctionne très bien pour imprimer un JPanel si j'ajoute d'abord ce JPanel à un JFrame et dessine ce JFrame à l'écran. Mais si je ne fais pas cela avant d'imprimer, je reçois une page blanche imprimée. Pourquoi est-ce?Puis-je utiliser printComponent sans avoir à dessiner un composant à l'écran en premier?

+0

Anton, qu'est-ce que tu veux dire dessiner un objet graphique? désolé je suis un noob à ce truc graphique. Savvas Dalkitsis, Si je définissais une taille préférée pour le panneau, est-ce que cela le ferait fonctionner? –

+0

La taille préférée est une suggestion au gestionnaire de mise en page. Donc ça ne marcherait pas. Aussi à propos de l'objet graphique, vous pouvez l'obtenir à partir d'un composant en appelant par exemple new JPanel(). GetGraphics(); Lorsque vous travaillez avec des composants swing, vous pouvez le transtyper en toute sécurité sur un objet Graphics2D qui fournit plus d'outils. Lire le tutoriel Java pour plus d'informations sur l'API Java2D –

+0

Je suis un peu confus maintenant sur ce qui cause votre problème. Voulez-vous dire que dessiner le JFrame puis ajouter le JPanel n'affiche rien, même si vous le repeignez après avoir ajouté le JPanel? – Anton

Répondre

0

parce que le panneau que vous souhaitez dessiner a une taille initiale de 0,0. Une fois ajouté à un conteneur avec un gestionnaire de disposition et affiché, il obtient sa taille "normale".

+0

est-ce que je peux définir ceci pour avoir une taille? J'ai essayé de donner au panel une taille préférée, mais cela n'a pas fonctionné. –

+0

try setSize (largeur int, hauteur int). Je ne suis pas sûr que cela fonctionnera puisque Java ne peut toujours pas dessiner le composant mais vous pouvez essayer. –

3

J'ai code utilisé comme suit pour créer un BufferedImage sur un panneau qui ne sont pas visibles sur le châssis:

JPanel panel = new JPanel(); 
... // add components 
panel.setSize(300, 300); 
panel.doLayout(); 
Questions connexes