Bonjour a tous,
Je suis en train de coder un programme qui permet de choisir une image dans une base de donnees suivant plusieurs parametres qui creent son nom (FileName). Une fois les parametres choisis, l'image, si elle existe, s'affiche dans une fenetre individuelle. Jusque la, tout va bien. Par contre je voudrais maintenant pouvoir afficher l'image dans une fenetre plus petite : il faudrait donc utiliser un JScrollPane afin de pouvoir visionner l'image sans redimensionner la fenetre. Et c'est la que ca ne va plus !
Je charge l'image de la maniere suivante :
(la fenetre est censee apres coup s'adapter a la taille de l'image, ce qui ne semble pas marcher avec le JScrollPane)
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37 class AffichageImage extends Canvas { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int largeurEcran = screenSize.width; int hauteurEcran = screenSize.height; Image image; public AffichageImage(String url) { image = getToolkit().getImage(url); prepareImage(image, this); } public void paint(Graphics g) { g.drawImage(image, 0, 0, this); } public boolean imageUpdate(Image image, int info, int x, int y, int l, int h) { if ((info & (WIDTH | HEIGHT)) != 0) { setSize(l, h); getParent().getParent().getParent().getParent().setBounds( (largeurEcran - l) / 2, (hauteurEcran - h) / 2, l+8, h+32 ); } if ((info & (ALLBITS)) != 0) { repaint(); return false; } else { return true; } } }
Mes problemes sont les suivants :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 JFrame fenetre = new JFrame(FileName); JPanel pan = new JPanel(); pan.setLayout(new BorderLayout()); AffichageImage panimg = new AffichageImage(FileName); JScrollPane NOD = new JScrollPane(panimg); pan.add(NOD,BorderLayout.CENTER); fenetre.setContentPane(pan); fenetre.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); fenetre.setVisible(true);
- la taille initiale de la fenetre est "nulle". Je redimensionne la fenetre plus grande mais toujours plus petite que la taille de l image. Les ScrollBar ne sont pas visibles mais elles sont bien presentes a l'extremite droite et tout en bas de l'image. La roulette de la souris me permet bien de descendre tout en bas pour enfin y voir la SrollBar horizontale. En deplacant celle-ci tout a droite, je trouve finalement la ScrollBar verticale ce qui pose deja un premier probleme : Les Scrollbar sont liees a l'image et non a la fenetre si je puis m'exprimer ainsi.
- A present, je redimensionne la fenetre en une taille telle que l'on soit plus large et plus haut que l'image. On voit donc l'image et le reste de la fenetre est gris, de plus les Scrollbar disparaissent. Je redimensionne la fenetre en prenant une largeur et une hauteur plus petites tout en laissant presente la zone grise : les Scrollbar reapparaissent mais il faut recourir a la meme manipulation que dans mon premier probleme pour les mettre visuellement en evidence. En bougeant tres legerement la Scrollbar horizontale, je remarque que la zone grise passe par dessus la Scrollbar verticale, et vice versa. Finalement, lorsque je redimensionne la fenetre en une taille plus petite que celle de l'image, les Scrollbar me permettent de revenir jusqu'au lieu dans la zone grise ou j'avais dernierement dimensionne la fenetre.
Ainsi :
- mes Scrollbar semblent attachees a l'image (respectivement a la zone grise) et se deplacent avec celle-ci, ou alors l'image (resp zone grise) passe par dessus les Scrollbar.
- une fois que la fenetre a ete dimensionnee dans la zone grise, le point de reference pour les Scrollbar devient l'endroit ou l'extremite basse droite de la fenetre dans la zone grise etait presente lorsque celle ci est redimensionnee a une echelle plus petite.
En esperant avoir ete assez clair et precis, j'espere que certains d'entre vous auront des suggestions, commentaires, conseils pour m'aider a pallier a ces petits desagrements ^_^
Merci d'avance
Partager