Pb scrollbar avec image

cs_chipou Messages postés 1 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 25 avril 2004 - 25 avril 2004 à 22:46
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007 - 26 avril 2004 à 12:48
Bonjour !!

Je me trouve confronté à un problème dont je ne trouve pas solution..

j'ai une classe "Canvas" dérivée d'un Jpanel dont voici le code..

///////Canvas.java

import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class Canvas extends JPanel {
private Image image;

public Canvas() {
image = Toolkit.getDefaultToolkit().getImage("");
}
public Canvas(String thisImage) {
image = Toolkit.getDefaultToolkit().getImage(thisImage);
}
public void changeImage(String thisImage) {
image = Toolkit.getDefaultToolkit().getImage(thisImage);
repaint();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.clearRect(0,0,getWidth(),getHeight());
if (image!=null)
g.drawImage(image,0,0,this);
else
setBackground(Color.white);
}

}

///////////

et une ihm dérivée d'une Jframe dont voici le code

//////////Ihm.java

import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Scrollbar;
import java.awt.event.*;
import java.lang.*;
import sun.audio.*;
import java.math.*;
import java.awt.Dimension;

public class Ihm extends JFrame{

private Canvas statistique =new Canvas("image.jpg");
private ScrollPane etape3= new ScrollPane(1);
static Ihm maFenetre;

//////////////////////////////////

Ihm() {
setSize(815,700);
setResizable(false);

//////////////////////////////////

getContentPane().setLayout(null);

statistique.setBounds(10,470,787,800);
//getContentPane().add(statistique);
//statistique.setVisible(true);

//scrollpane
etape3.setBounds(10,470,787,170);
getContentPane().add(etape3);
etape3.add(statistique);

Dimension dim=etape3.getViewportSize();
System.out.println(dim);
System.out.println(dim.getHeight());
System.out.println(dim.getWidth());
System.out.println(etape3.getVScrollbarWidth());
System.out.println(etape3.getHScrollbarHeight());
etape3.setScrollPosition(0,500);

etape3.setScrollPosition(0,500);
Point pt=etape3.getScrollPosition();
System.out.println(pt);

etape3.setVisible(true);

/*
jscrollpane
JScrollPane pictureScrollPane = new JScrollPane(statistique);
pictureScrollPane.setBounds(10,470,787,170);
getContentPane().add(pictureScrollPane);

pictureScrollPane.Scrollbar;
*/

setVisible(true);

}

public static void main( String[] args) {
maFenetre = new Ihm();
}
}

//////////////

dans Ihm j'appelle la classe Canvas mais il se trouve que si je prends une image supérieure en surface à celle du scrollpane ou jscrolpane je n'ai pas les scrollbar qui me permettent de voir les zones non visibles de l'image..
de plus si je force l'apparition des scrollbar sur le scrollpane je vois les scrollbars mais ils ne me sont d'aucune utilité du fait que mon scrollpane considère l'image comme étant de même taille que lui..
Comment faire pour voir ces zones invisibles de l'image (du fait que la surface du scrollpane est plus petite) sans augmenter bien sur la surface du scrollpane ?

Merci d'avance pour votre aide

1 réponse

dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
26 avril 2004 à 12:48
il te manque un setPreferredSize a ton canvas, relatif a ton image...
et la tu la verras defile...
ton panel n'a pas te taille minimale, le viewport ne marche pas...
0
Rejoignez-nous