Probleme affichage Graphics et Graphics2D
Résolu/Fermé
lolo991971
Messages postés
3
Date d'inscription
jeudi 22 février 2018
Statut
Membre
Dernière intervention
23 février 2018
-
22 févr. 2018 à 18:16
lolo991971 Messages postés 3 Date d'inscription jeudi 22 février 2018 Statut Membre Dernière intervention 23 février 2018 - 23 févr. 2018 à 11:04
lolo991971 Messages postés 3 Date d'inscription jeudi 22 février 2018 Statut Membre Dernière intervention 23 février 2018 - 23 févr. 2018 à 11:04
A voir également:
- Probleme affichage Graphics et Graphics2D
- Affichage double ecran - Guide
- Problème affichage fenêtre windows 10 - Guide
- Windows 11 affichage classique - Guide
- Intel hd graphics 4600 ✓ - Forum Audio
- Problème affichage page internet google chrome ✓ - Forum Google Chrome
2 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
23 févr. 2018 à 00:17
23 févr. 2018 à 00:17
Bonjour,
Attention aux noms des méthodes, dans Panneaubis tu as mis
Un moyen de voir ce genre d'erreur est de systématiquement ajouter l'annotation @Override sur les méthodes que tu surcharges, ce qui te permet de vérifier que c'est effectivement bien une surcharge.
PS. Graphics2D extends Graphics et en l'occurence ici tu auras toujours un Graphics2D donc ça ne sert pas à grande chose de faire tantôt un code pour Graphics tantôt pour Graphics2D alors qu'au final tu n'auras que du Graphics2D.
Attention aux noms des méthodes, dans Panneaubis tu as mis
public void paintcomponent(Graphics g1){avec un c minuscule à component, or la méthode de surcharge c'est avec un C majuscule (c'est du CamelCase), donc la méthode que tu as écrite ne surcharge rien du tout et n'est jamais appelée...
Un moyen de voir ce genre d'erreur est de systématiquement ajouter l'annotation @Override sur les méthodes que tu surcharges, ce qui te permet de vérifier que c'est effectivement bien une surcharge.
PS. Graphics2D extends Graphics et en l'occurence ici tu auras toujours un Graphics2D donc ça ne sert pas à grande chose de faire tantôt un code pour Graphics tantôt pour Graphics2D alors qu'au final tu n'auras que du Graphics2D.
lolo991971
Messages postés
3
Date d'inscription
jeudi 22 février 2018
Statut
Membre
Dernière intervention
23 février 2018
23 févr. 2018 à 11:04
23 févr. 2018 à 11:04
rebonjour,
La courbe se trace bien mais voila ce que j'obtiens dans l’écran
Mon code est
j'ai essayé comme vous pouvez le voir update, revalidate, validate et repaint mais le contenu apparait toujours lorsque la courbe se dessine mais pas avant
merci pour votre aide
La courbe se trace bien mais voila ce que j'obtiens dans l’écran
Mon code est
private void traceCourbe(float xMax, float yMax, JTable tableau) { new Thread(new Runnable(){ public void run(){ afficheCourbe.removeAll(); afficheCourbe.updateUI(); Panneaubis courbe = new Panneaubis(); afficheCourbe.add(courbe); //afficheCourbe.validate(); //afficheCourbe.revalidate(); //afficheCourbe.repaint(); afficheCourbe.updateUI(); // Tracer la courbe point par point float y= 220/(yMax*1.1f); float x = 800/(xMax*1.1f); System.out.println("x=: "+x+"y= : "+y+" "+xMax+ " "+yMax); SwingWorker sw = new SwingWorker(){ protected Object doInBackground() throws Exception { float x1,x2,y1,y2; int j = 0; do { x1 = 20f +(float) tableau.getValueAt(j, 1)*x; x2 = 20f +(float) tableau.getValueAt(j+1, 1)*x; y1 = 220 - (float) tableau.getValueAt(j, 2)*y; y2 = 220 -(float) tableau.getValueAt(j+1, 2)*y; System.out.println(x1+" "+x2+" "+y1+" "+y2); courbe.setPosX(x1); courbe.setPosY(y1); courbe.setPosX2(x2); courbe.setPosY2(y2); courbe.validate(); courbe.revalidate(); courbe.repaint(); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } j++; //System.out.println(courbe.getPosX()+" "+courbe.getPosX2()+" "+courbe.getPosY()+" "+courbe.getPosY2()); }while (y2>20); return null; } public void done(){ courbe.updateUI(); if(SwingUtilities.isEventDispatchThread()) System.out.println("Dans l'EDT ! "); courbe.repaint(); } }; sw.execute(); return; } }).start(); }
public class Panneaubis extends JPanel { private float posX = -50; private float posY = -50; private float posX2 = -50; private float posY2 = -50; @Override public void paintComponent(Graphics g1){ super.paintComponents(g1); Graphics2D g = (Graphics2D) g1; super.paintComponents(g); g.drawRect(0, 0, 100, 100); g.drawString("courbe", 100, 100); g.setBackground(Color.cyan); g.setColor(Color.red); //g.drawOval((int) posX, (int) posY, 50, 50); g.draw(new Line2D.Float(posX, posY, posX2, posY2)); }
j'ai essayé comme vous pouvez le voir update, revalidate, validate et repaint mais le contenu apparait toujours lorsque la courbe se dessine mais pas avant
merci pour votre aide
23 févr. 2018 à 07:24
Je me sens tout bête sur ce coup là.
Je n'ai pas vu cette erreur toute bête.
Je n'utilise pas les deux , j'ai fait deux classes pour tester mon programme, à terme, je n'utilise que graphics2D (il accepte des valeurs float et double).
Je vais voir tout à l'heure si avec Graphics2D, j'ai toujours le fond de mon jpanel qui ressemble au reste de la fenêtre ou sinil est bien de la couleur définie
Merci beaucoup