Bonsoir à tous,
Je suis débutant en Java et j'ai quelques questions concernant les interfaces graphiques.
J'ai effectué une recherche rapidement et n'ai trouvé aucune réponse exacte à mes questions, donc désolé si ces questions ont déjà été posées.
Voici mon problème :
J'essais actuellement de développer une petite application pour simuler le déplacement de voitures sur une route.
J'ai donc une classe Voiture, une classe Route, et une classe Fenetre qui me permet de faire un affichage graphique.
- Premierement j'utilise TexturePaint pour que mes images ne soient pas déformées mais reproduite, la fonction suivante s'en charge :
- J'ai ensuite ça qui paint les textures et les voitures :
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 public Graphics2D DessinerTextures(Graphics g){ //Création d'un graphics 2d Graphics2D g2d = (Graphics2D)g; //Création de la BufferedImage ImageIcon image_herbe = new ImageIcon("herbe.jpg"); BufferedImage buffImg_herbe = new BufferedImage(image_herbe.getIconWidth(), image_herbe.getIconHeight(), BufferedImage.TYPE_INT_RGB); //initialisation de l'images Graphics2D g2d_herbe = buffImg_herbe.createGraphics(); g2d_herbe.drawImage(image_herbe.getImage(), 0, 0, this); //création du rectangle aux dimension de la texture de fond Shape imgRect_herbe = new Rectangle2D.Double(0.0, 0.0, buffImg_herbe.getWidth(), buffImg_herbe.getHeight()); //Création du TexturePaint TexturePaint texture_herbe = new TexturePaint(buffImg_herbe, imgRect_herbe.getBounds2D()); //Création des shapes Shape rectShapeHaut = new Rectangle2D.Double(jScrollPane1.getX(),jScrollPane1.getY(),route.longueur(),123); Shape rectShapeBas = new Rectangle2D.Double(jScrollPane1.getX(),jScrollPane1.getY()+route.largeur()+123,route.longueur(),jScrollPane1.getHeight()); //dessine les rectangles remplis avec les textures g2d.setPaint(texture_herbe); g2d.fill(rectShapeHaut); g2d.fill(rectShapeBas); return g2d; }
Problème : le thread étant rafraichi toute les 30ms, ca rame beaucoup et l'image scintille !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public void paint(Graphics g) { DessinerTextures(this.getGraphics()); for (int voie = 0; voie < route.nbVoies(); voie++) for (int i = 0; i < route.longueur(); i++) if (existeVoiture(voie,i)) { ImageIcon img_voiture = new ImageIcon("voiture_rouge.jpg"); Image image_voiture = img_voiture.getImage(); ImageObserver image_voiture_obs = img_voiture.getImageObserver(); g2d.drawImage(image_voiture,jScrollPane1.getX()+(int)route.vehicule(voie,i).position,jScrollPane1.getY()+133+20*voie,image_voiture_obs); } }
De plus, là apparement je ne dessine pas dans mon jScrollPane mais par dessus donc les scrolbars ne s'affichent pas l'orsque le dessin est plus grand que le jScrollPane, et je ne sais pas comment faire.
Voici une petite image de l'interface pour vous donner une petite idée :
En résumé voici ce que je souhaiterais :
- suivant la longueur de l'autoroute une scrollbar horizontal doit apparaître.
- l'éxecution doit être fluide, sans scintillements.
Comment faire ? mon code est-il otpimisé ?
Merci à tous.![]()
A vous lire.









Répondre avec citation




Partager