Bonjour,
J'ai défini un JScrollPane sur un panel.
Ce panel comprend un autre panel sur lequel est affiché une BufferedImage.
J'effectue des zoom/dézoom sur cette image.
Le problème est que les scroll bar ne changent pas de taille lorsque je zoome. En effet, on ne peu consulter que la partie de l'image affichée en zoom(et donc on ne peu se déplacer sur le reste de l'image.

Ce problème n'est pas du au zoom (car en agrandissant la fenêtre on voit toute l'image) mais bien au JScrollPane.
J'ai essayé de mettre le viewport sur l'image mais bien sur c'est incompatible...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
c = getContentPane();
JPanel panel = new PanelMap(this.bassin);
JPanel panel2 = new JPanel();
panel2.setLayout(new BorderLayout());
panel2.add(panel,BorderLayout.NORTH);
c.add(panel2);
JScrollPane scrollPane = new JScrollPane();
scrollPane.getViewport().add( panel2 );
c.add(scrollPane);
mettre le view port sur panel ne marche pas non plus.



Avez vous des idées s'il vous plait?



Autre problème :

J'utilise une superposition d'images.
Une image vide de type bufferedImage sur laquelle j'effectue des modifications graphiques (setRGB()) et une contenant une image invoquée.
En utilisant le fameu zoom, l'image invoquée se modifie bien, cependant la buffered image ne chnage pas de taille.
J'ai essayé plusieurs solutions ...
Je voudrais savoir si il était possible de supprimer cette image afin d'en afficher une autre à la place?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
			try 
			{
				sourceImage = ImageIO.read(new File("./"+bassin+".jpg"));
				sourceImageWidth = (sourceImage.getWidth())*coef;
				sourceImageHeight = (sourceImage.getHeight())*coef;
				addMouseWheelListener(this);
				img = new BufferedImage(sourceImageWidth, sourceImageHeight, BufferedImage.TYPE_INT_ARGB);
			}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
 
		public void paint(Graphics g) 
		{
			int width = (int)(sourceImageWidth*zoom);
			int height = (int)(sourceImageHeight*zoom);
			Image img2 = sourceImage.getScaledInstance(width, height, Image.SCALE_SMOOTH);
			g.drawImage(img2,0,0,null);
			g.drawImage(img, 0, 0, null);
		}


En vous remerciant par avance