Bonjour !
Je suis en train de modifier une applet de supervision pour lui ajouter une fonctionnalité de supervision graphique.
Dans une autre appli (écrite sous C++ Builder), je viens créer des dessins et déposer des objets qui s'animent selon l'état de l'automate industriel supervisé. Tout le paramétrage de ces dessins est contenu dans cet automate.
D'un autre côté, cet automate dispose d'un serveur web embarqué basique, me permettant de lancer une applet Java. Dans cet applet, j'aimerai retrouver cette supervision graphique.
Voici comment j'aimerai procéder : j'ai un javax.swing.JPanel, dans lequel j'aimerais créer des petits JPanel placés aux bons endroits (et avec la taille correcte) dans lesquels je viendrais dessiner mes petits icônes animés.
A l'heure actuelle, j'arrive à créer mes JPanels, qui se retrouvent aux bons endroits et avec la bonne taille, mais impossible de dessiner dedans...
Voici deux petits bouts de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 // code du JPanel contenant ma zone de dessin public class Onglet_dessins implements ItemListener { [...] public void ActualiserIcones(int type){ for(int i=0; i<numero[ecran_en_cours][type]; i++){ JPanel temp = new JPanel(); temp.setBounds(objets[ecran_en_cours][type][i].getBounds((float)2.0)); temp.setBackground(Color.white); //objets[ecran_en_cours][type][i].getDessin(temp.getGraphics(), (float)2.0); temp.repaint(); pnl_Dessins_ZoneDessin.add(temp); } pnl_Dessins_ZoneDessin.repaint(); } [...] }Problème : temp.getGraphics() me retourne null (et donc une erreur lorsque je fait g.setColor() ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 // Code de ma classe "Dessins" (dont objets[][][] est une instance ci-dessus) public class Dessins{ public void getDessin(Graphics g, float zoom){ switch(this.type){ case TYPE_RECTANGLE: this.getDessinRectangle(g, zoom); [...] } } private void getDessinRectangle(Graphics g, float zoom){ g.setColor(Color.white); g.fillRect(0, 0, (int)((X2-X1)*zoom), (int)((Y2-Y1)*zoom)); if(this.logique==0){ g.setColor(Color.black); }else if((this.value&AFF_SEUIL)==AFF_SEUIL){ g.setColor(Color.red); }else{ g.setColor(Color.green); } g.drawRect(0, 0, (int)((X2-X1)*zoom), (int)((Y2-Y1)*zoom)); } }
D'où vient mon erreur ?
Merci d'avance pour vos réponses !
Cordialement,
Ch'Portos.
Partager