Actualliser.

ichigo-baka
Actualliser.

Bonjour.
J'ai un petit problème d'affichage d'image.
Il doit y avoir un concept que je ne métrise pas.
En effet mon image ne s'affiche pas, a moins de mettre un repaint au niveau du mouseListener. (l'image ne s'affichant pas est image et non img).
img est une image sur laquelle j'effectue certaines modiffications...

	public MainPage(String toto) 
	{
		super("Bassin :");
		this.initialize();
	}

	private void initialize()
	{
		c = getContentPane();
		JPanel panel = new PanelMap();
	    image = getToolkit().getImage( "./Elbe.jpg ");
		panel.setPreferredSize(new Dimension(600, 800));
		c.add(panel);
	}

	class PanelMap extends JPanel 
	{
		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;
		private BufferedImage img;
		private int origineX = 20;
		private int origineY = 47;
		private Cell a [][];
		private int x,y;
		private int number, number2;

		public PanelMap() 
		{
			super();
			this.initialize();
		}

		private void initialize() 
		{
			img = new BufferedImage(600, 800, BufferedImage.TYPE_INT_ARGB);
			addMouseListener(new MouseAdapter() 
			{

				public void mouseClicked(MouseEvent e) 
				{
					repaint();
				}

			});
		}

		public void paint(Graphics g) 
		{
			g.drawImage(image,0,0,null);
			g.drawImage(img, 0, 0, null);
		}

J'ai viré les parties du code qui ne servaient pas pour ce problème.
J'ai testé de mettre des repaint un peu partout (initialize, PanelMap, MainPage, et l'autre initialize).
Enfin bon c'était du bricolage.

Avez vous une idée pour que l'image "image" s'affiche?

fredericmazue

Quote:
Avez vous une idée pour que l'image "image" s'affiche

Oui, une idée toute simple, l'afficher ;) :)
Bon repaint, c'est n'est pas la manière. Et ça fait redessiner tout le panneau au moins, ce qui est plus que l'effet souhaité je suppose.
La manière est d'obtenir un objet Graphics2D pour dessiner lors du clic

donc (sous réserve de fautes de petites frappes, mais l'idée y est)

Graphics2D g = (Graphics2D)this.getGraphics();
g.drawImage(image,0,0,this); // remarque bien this 
g.dispose();
ichigo-baka

		public void paint(Graphics g) 
		{
			g.drawImage(image,0,0,this);
			g.drawImage(img, 0, 0, null);
		}

Voila j'ai remplacé null par this.
Le truc c'est que maintenant ca marche, mais l'application rame pendant 10 15 secondes avant d'afficher l'image "image" mais affiche bien img.

Je ne vois pas d'ou ca vient :(

fredericmazue

Quote:

Je ne vois pas d'ou ca vient

Je crois qu'il y a un problème entre la chaise et l'écran :D

N'ais je pas expliqué de ne pas bidouiller avec des méthodes paint (ou repaint) mais d'obtenir un Graphics 2D à la volée sur les clics de souris pour tracer ?
A quoi ça sert que le fred il se décarcasse hein ?

C'est toujours pareil sur ce forum Java ... "J'ai un problème en Java m'sieur, mais si vous m'aidez, je ferai bien attention à ne pas faire comme vous dites".

:cry: :cry: :cry: :cry: :cry:

Grosse fatigue...

Allez je sors prendre l'air moi.

->[]

ichigo-baka

Non mais en fait le truc c'est que je ne colore pas les points de clic.
Je n'actualise donc pas sans cesse mes images.
A l'ouverture de la page, des points se colorent seul (selon les coordonnées définies dans un fichier exel...).
Ce nuage de point s'affiche bien à l'ouverture de la page mais pas la carte sur laquelle sont superposés les points.

Enfin ca c'était mon problème.
Maintenant il est résolu :).

Désolé de pas avoir écouté les conseils en reposant une question débile par lasuite. Je suis un peu tétu par moment :p

Enfin ^^.

Je vais voir comment marche Graphics 2D car je vais maintenant devoir modifier mon nuage de points en fonction du zoom.

Encore merci et désolé des fakes questions :roll:

fredericmazue

Quote:
Non mais en fait le truc c'est que je ne colore pas les points de clic.

Peut être mais peu importe.
La logique de l'application est autre ok, mais cette logique ne peut être d'invoquer paint/repaint à tout bout de champ. C'est contre productif, bref "ça rame"

Quote:
Je suis un peu tétu par moment

Si on considère qu'on ne voit ça quasiment que sur le forum Java, j'en viens à me demander si ce n'est pas un effet de bord de ce cher langage ;) :lol: