Dessin en Java en utilisant Canvas
Je tiens à attirer en Java la Toile, mais ne peut pas le faire fonctionner car je ne sais pas ce que je fais. Voici mon code simple:
import javax.swing.JFrame;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Color;
public class Program
{
public static void main(String[] args)
{
JFrame frmMain = new JFrame();
frmMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmMain.setSize(400, 400);
Canvas cnvs = new Canvas();
cnvs.setSize(400, 400);
frmMain.add(cnvs);
frmMain.setVisible(true);
Graphics g = cnvs.getGraphics();
g.setColor(new Color(255, 0, 0));
g.drawString("Hello", 200, 200);
}
}
Rien ne s'affiche sur la fenêtre.
Suis-je tort de penser que le Canevas est un papier et des Graphiques est mon Crayon? Est-ce qu'il fonctionne?
source d'informationauteur dpp
Vous devez vous connecter pour publier un commentaire.
Suggestions:
getGraphics()
sur un composant que l'objet Graphique obtenu sera transitoire.paintComponent()
méthode.Clé tutoriel liens:
Vous avez à remplacer votre Toile de
paint(Graphics g)
méthode et effectuer votre dessin. Voir la peinture (le) de la documentation.Comme indiqué, le mode de fonctionnement par défaut est d'effacer la toile, de sorte que votre appel à la toile " objet graphique ne fonctionne pas comme vous le souhaiteriez.
Pourquoi le premier moyen de ne pas travailler. Toile objet est créé et la taille est définie et le grahpics sont fixés. J'ai toujours trouvé cela étrange. Aussi, si une classe étend JComponent vous pouvez remplacer le
et puis, ne devriez-vous pas être en mesure de créer et de l'instance de la classe à l'intérieur d'une autre classe, et puis il suffit d'appeler
NewlycreateinstanceOfAnyClass.repaint();
J'ai essayé cette approche pour un certain jeu de programmation, j'ai travaillé et il ne semble pas fonctionner de la façon dont je pense qu'il devrait être.
Doug Hauf
La suivante devrait fonctionner: