2012-12-05 2 views
0

J'utilise la bibliothèque Slick comme cadre pour mon petit jeu. Linebreaks n'est pas supporté par défaut sur l'objet Graphics2d. Cependant, je l'ai trouvé ce petit fix:Modification d'une méthode déjà existante

private void drawString(Graphics g, String text, int x, int y) { 
    for (String line : text.split("\n")) 
     g.drawString(line, x, y += g.getFontMetrics().getHeight()); 
} 

Comme je suis très nouveau à Java, je ne suis pas sûr de ce que la meilleure façon de mettre en œuvre ce serait, et serait vraiment l'amour de l'aide! :-)

+1

quel est le problème avec l'approche ci-dessus? Pouvez-vous être plus clair quelle sorte d'aide? –

+0

Eh bien, où puis-je mettre ce code? Si je commandeclick la méthode drawString, il me prend à la classe, mais il dit que la méthode elle-même est compilée et en lecture seule –

Répondre

0

Qu'est-ce que vous voulez dans votre cas est la suivante:

a) surcharger la méthode donnée (dans le cas où vous avez accès à la classe et peut-être ajouter un paramètre)

exemple:

private void drawString(Graphics g, String text, int x, int y,boolean test)

et passer un vrai test ou sur quelque chose comme ça, mais cela est une façon grossière de faire les choses

b) Sinon, vous pouvez simplement étendre la classe qui implémente votre méthode et re mettre en œuvre la méthode que vous le souhaitez dans la classe étendue

c) ou comme une troisième alternative qui est peut-être le plus viable dans ce cas est juste modifier la méthode originale que @ user1594895 états, mais dans ce cas vous devez être sûr que vous ne ferez pas d'utilisation de la méthode originale autrement envisager de faire a) ou b)

Permettez-moi savoir quel type d'approche vous avez décidé d'utiliser.

0

Mon conseil est: téléchargez les sources de la bibliothèque Silk que vous utilisez, vous pouvez télécharger https://bitbucket.org/kevglass/slick.

Méthode d'édition spécifiée. Construisez-le et incluez-le dans votre projet. Avec IDE comme NetBeans ou Eclipse est simple.

Vous devez soumettre un bogue avec un correctif relatif afin qu'il soit intégré dans la bibliothèque générale.

0

Un moyen facile (qui est déjà mentionné dans votre message) que vous devez appliquer lorsque vous n'appelez cette méthode que d'une classe: Insérez simplement l'extrait de code ci-dessus dans votre classe, puis appelez-le comme toute autre méthode ..il est une sorte de méthode d'aide alors. (Demandez Si vous ne recevez pas ce que je veux dire)


Une autre façon facile à faire est - si la classe est pas définitive - est juste pour étendre la classe et remplacer la méthode:

public class MyGraphics extends Graphics { 
     @Override 
     public void drawString(String text, int x, int y) { 
     for (String line : text.split("\n")) 
      super.drawString(line, x, y += getFontMetrics().getHeight()); 
     } 
} 
Ensuite, vous

travailler juste avec votre propre classe - ce qui est exactement la même chose que l'autre classe, attendez-vous à votre drawString méthode est différente, vous instancier comme ceci: Graphics g = new MyGrpahics();

Questions connexes