2009-03-14 9 views
0

Lorsque vous appelez repaint(), par exemple, repaintComponent (Graphics) est appelé, puis vous pouvez l'appeler depuis l'extérieur du class sans le paramètre Graphics. Je voudrais avoir une fonction qui prend plus de paramètres que j'utilise, mais je veux toujours pouvoir dessiner avec, donc je dois être capable de faire un appel comme ça (par exemple repaint() appelle repaintComponent (Graphics)) ou accède à Graphics pour appeler la fonction, en supposant qu'il soit repeint en appelant explicitement repaintComponent() de toute façon.Appel d'une méthode Java avec le paramètre Graphics implicite, comme repaint() ou l'accès aux Graphics dans un JPanel

Je pensais à mettre les données dans l'objet, puis à dessiner, mais je ne suis pas sûr si cela fonctionnerait et ce serait assez compliqué, je pense.

+0

Peut-être que c'est juste moi mais votre question semble confuse, je ne comprends pas vraiment ce que vous voulez faire. –

+0

@Prinny: Est-ce que ma réponse à une aide quelconque? –

Répondre

1

Vous ne pouvez pas appliquer de peinture de composant à l'interface graphique sauf et uniquement lors du traitement d'un événement de peinture O/S, qui déclenche un événement de peinture Java sur le thread de distribution d'événements. Repaint n'appelle paint() ou aucun de ses dérivés - il demande de repeindre une zone de votre composant, ce qui déclenche un événement paint.

Vous devez d'une manière ou d'une autre définir les informations dont vous avez besoin de peindre dans votre composant, que ce soit en définissant des propriétés (par exemple Swing) ou sous-classes et en ajoutant les paramètres à votre composant sous-classé. Après avoir placé vos données dans un objet, la définition de cet objet dans votre composant doit être triviale.

Vous pouvez également créer un objet séparé avec une méthode de peinture (Graphics), associer cet objet à votre composant et invoquer ses méthodes de peinture à partir de la peinture d'objet - Je l'ai fait dans le passé pour séparer la peinture concerne un grand nombre d'objets.

+0

+1 Singe logiciel FYI, appelant repaint() n'appelle pas directement paintComponent (...). Vous demandez essentiellement à swing (awt) de repeindre un composant au prochain moment possible. Le thread d'événement sera décidé quand ce moment sera et éventuellement un paintComponent (...) et l'objet graphique approprié sera fourni par le code natif de niveau supérieur. L'idée de passer des paramètres à une fonction sans les déclarer explicitement ou d'utiliser un objet/objet statique/singleton environnant n'est pas possible en Java. – basszero

Questions connexes