2009-02-18 6 views

Répondre

6
Graphics2D g2 = (Graphics2D)g; 

Pas besoin d'être compliqué.

Vous recevrez toujours un G2D dans la méthode de peinture.

J'aime même d'appeler le paramètre Graphicsg2 puis jeté à un Graphics2D nommé g pour rendre l'utilisation plus simple.

+0

Vous recevez toujours un? Pourquoi les arguments dans la déclaration "Graphics g" et il n'y a pas de "Graphics2D g" alternative à remplacer? En interne, un objet Graphics2D est-il converti en objet Graphics pour une compatibilité ascendante, puis vous pouvez le restaurer sur Graphics2D si nécessaire? – spligak

+0

Vous recevez un objet Graphics pour une raison historique dont je ne me soucie plus. Je fais toujours le casting si j'ai besoin de méthodes G2D. – jjnguy

+0

Vous pouvez utiliser g comme la variable Graphics2D car il va être utilisé dans tout le code. Vous pouvez également avoir un composant général et le transmettre à un moteur de rendu en utilisant une interface qui utilise Graphics2D au lieu de Graphics pour les paramètres. –

-1
Graphics2D g2 = Graphics2D.class.cast(g); 
+0

Pourquoi le feriez-vous? – jjnguy

0

Pour autant que je sache, vous ne pouvez pas faire grand-chose dans cette situation. Vous pouvez vérifier que vous avez effectivement un objet Graphics2D avant d'être casté. Mais, autant que je sache, vous pouvez obtenir autre chose de toute façon.

0

Personnellement, j'aime

Graphics2D g2 = g as Graphics2D; 
if (g2 == null) 
//do stuff 

Mais comme dit précédemment, aucune raison de le rendre plus compliqué qu'il est: P

+0

Pouvez-vous utiliser 'as' dans java? – jjnguy

+0

Je ne le pensais pas. – jjnguy

+0

Oh, c'est java .. Mon mauvais. J'avais sommeil: O – cwap

0

Son ne concerne pas directement, mais à Scala ils reconnu ce « déplaisant » - et vous encourager à utiliser la correspondance de modèle pour faire face à la bonne classe au lieu d'un casting:

g match { 
    case Graphics2D(g2d) => //code goes here ! 
    case _ => Nothing //or throw exception etc 
} 

Ils dissuadent activement moulages (il n'y a pas de syntaxe grise spéciale, sur une méthode).

Pas tout à fait pertinent pour vous, mais la pensée est utile de noter que d'autres sont troublés par ce que vous détresses)

Questions connexes