merci hedes mais utiliser ta méthode avec mon code , car tu as définit un exemple comment l'integrer dans mon code
Version imprimable
merci hedes mais utiliser ta méthode avec mon code , car tu as définit un exemple comment l'integrer dans mon code
Je ne t'ai pas donné un exemple, je t'ai donné un composant que tu peux utiliser pour afficher n'importe quelle image. Tu peux utiliser ce composant à la place d'un JLabel.Citation:
Envoyé par ulysse031
pour créer ton image, tu peux par exemple :
Je ne peux guère faire plus.Code:
1
2
3
4
5
6
7
8 byte[] dataFromBdd = .... ; java.awt.Image img = java.awt.Toolkit.getDefaultToolkit().createImage(byte); LPanel myLPanel = new LPanel(); myLPanel.setImage(img); javax.swing.JDialog jd = new javax.swing.JDialog (); jd.getContentPane().add(myLPanel); jd.show();
A+
H.
merci encore mais pas facile d'integrer le code que tu as posté car je n'arrive pas à le comprendre:cry:
Je vais faire une tentative
J'espère que tu comprend mieux (si non dis précisement ce que tu comprend pas)Code:
1
2
3
4
5
6
7
8 byte[] dataFromBdd = .... ;// c'est dans ce tableau que tu doit mettre le résultat de ta reqete java.awt.Image img = java.awt.Toolkit.getDefaultToolkit().createImage(dataFromBdd );// création de l'image LPanel myLPanel = new LPanel(); myLPanel.setImage(img);//on met l'image en fond d'un Panel javax.swing.JDialog jd = new javax.swing.JDialog ();// on créé une fenetre jd.getContentPane().add(myLPanel);// on ajoute le panel à la fenetre jd.show();// on affiche la fenetre
bonsoir merci mes amis je voulais bien developper cette idée et d'afficher l'image sur JScrollpane
voila le code mais l'image n'affiche pas sur le composant JScrollPane
cette partie ne marche pas jS.add(photo);Code:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 package aa; import javax.swing.*; import java.awt.*; import java.sql.*; class SimpleFenetre extends JFrame{ private JPanel pan; private JLabel b = new JLabel("je suis la "); private JButton a = new JButton ("entrer"); private JScrollPane jS=new JScrollPane (); private JPanel pan2 ; public SimpleFenetre (){ super ("une fenetre avec uen image"); setSize(300,200); this.setVisible(true); Connection conn = null; String url = "jdbc:mysql://localhost/test"; String userName = "root"; String password = "19821405"; try { Class.forName("org.gjt.mm.mysql.Driver"); conn = DriverManager.getConnection(url, userName, password); Statement instruction = conn.createStatement(); String sql="SELECT img FROM image WHERE name = 'ulysse'"; ResultSet resultat = instruction.executeQuery(sql); while (resultat.next()){ JLabel photo = new JLabel(); String img = resultat.getString("img"); photo.setIcon( new ImageIcon( img )); jS.add(photo); } } catch (ClassNotFoundException ex) { JOptionPane.showMessageDialog(null, "Classe introuvable" + ex.getMessage()); } catch (SQLException ex) { JOptionPane.showMessageDialog(null, "erreur JDBC : " + ex.getMessage()); } pan=new Panneau(); pan.setLayout(null); jS.setBounds(520 ,250 ,200,64 ); pan.add(jS); getContentPane().add(pan); pan.add(b); b.setBounds(50 ,50 ,500,24 ); pan.add(a); a.setBounds(800 ,600 ,100,30 ); getContentPane().add(pan); } public static void main(String[] args) { SimpleFenetre gui = new SimpleFenetre(); } } class Panneau extends JPanel { private ImageIcon rouge ; public Panneau(){ rouge =new ImageIcon("C:\\Documents and Settings\\BE\\Bureau\\a.JPG"); } public void paintComponent(Graphics g){ super.paintComponent(g); Image imRouge=rouge.getImage(); g.drawImage(imRouge,-405,-335,this); } }
je viens de lire http://java.sun.com/docs/books/tutor...html#operation
mais je n'ai pas bien compris :cry:
le problème que l'image (img) ne s'affiche pas sur JScrollPane (Js)
bonjour
je coince encore pour afficher l'image sur le composant JScrollPane :cry:
essayé me comprendre
une autre solution que le JScrollPane :
mais pour que ca marche il faut que tu ajoutes la librairie swingx à ton projet.Code:
1
2
3
4
5
6
7
8
9 JXImagePanel panel_image = new JXImagePanel(); ImageIcon bandeau = new ImageIcon(...ton image...); panel_image.setImage(bandeau.getImage()); //se dernier parametre te permet de modifier la facon dont l'image s'affiche panel_image.setStyle(JXImagePanel.Style.SCALED);
tu la trouve ici : http://swinglabs.org/downloads.jsp
merci ami pour cette information mais je voulais bien utiliser JScrollPane pour afficher l'image
merci encore :cry:
Bah tu dessine ton image dans un JPanel (fais bien attention à setter la prefferedSize du JPanel en accord avec la taille de ton image, sinon pas de scrollbars) puis tu metq ton JPanel dans ton JScrollPane.
Et ne viens pas dire que ça ne marche pas, je viens de le tester.Code:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 import java.awt.Dimension; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; public class PanneauTest extends JPanel { private BufferedImage rouge; public PanneauTest() { try { rouge = ImageIO.read(new File("barbary.jpg")); } catch (IOException e) { // TODO Bloc catch auto-généré e.printStackTrace(); } if(rouge != null) { this.setPreferredSize(new Dimension(rouge.getWidth(), rouge .getHeight(null))); } } public void paintComponent(Graphics g) { super.paintComponent(g); if(rouge != null) { g.drawImage(rouge, 0, 0, null); } } public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException e) { // TODO Bloc catch auto-généré e.printStackTrace(); } catch (InstantiationException e) { // TODO Bloc catch auto-généré e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Bloc catch auto-généré e.printStackTrace(); } catch (UnsupportedLookAndFeelException e) { // TODO Bloc catch auto-généré e.printStackTrace(); } JFrame f = new JFrame(); PanneauTest p = new PanneauTest(); f.add(new JScrollPane(p)); f.pack(); f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); f.setLocationRelativeTo(null); f.setVisible(true); } }
Preuve:
salut
merci pour ce que tu m'as fait
voila j'ai encore modifié le code pour afficher une image de ma base de donnée sur JScrollPane ();
voila le code
mais le malheur l'image ne s'affiche pasCode:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 package aa; import javax.swing.*; import java.awt.*; import java.sql.*; class SimpleFenetre extends JFrame{ private JPanel pan; private JLabel b = new JLabel("je suis la "); private JButton a = new JButton ("entrer"); private JScrollPane jS=new JScrollPane (); public SimpleFenetre (){ this.setResizable(false); this.setSize(720, 520); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Connection conn = null; String url = "jdbc:mysql://localhost/test"; String userName = "root"; String password = "dddd5"; try { Class.forName("org.gjt.mm.mysql.Driver"); conn = DriverManager.getConnection(url, userName, password); Statement instruction = conn.createStatement(); String sql="SELECT img FROM image WHERE name = 'ulysse'"; ResultSet resultat = instruction.executeQuery(sql); while (resultat.next()){ ImageIcon ii =new ImageIcon(resultat.getString("img")); Image ima; ima =ii.getImage().getScaledInstance(90,90,Image.SCALE_AREA_AVERAGING); JLabel l = new JLabel(new ImageIcon(ima)); pan=new Panneau(); pan.setLayout(null); jS.setBounds(450 ,100 ,90,90 ); Panneau p = new Panneau(); pan.add(new JScrollPane(l)); pan.add(jS); getContentPane().add(pan); pan.add(b); b.setBounds(170 ,100 ,80,24 ); pan.add(a); a.setBackground(Color.red); a.setBounds(220 ,100 ,100,30 ); getContentPane().add(pan); } } catch (ClassNotFoundException ex) { JOptionPane.showMessageDialog(null, "Classe introuvable" + ex.getMessage()); } catch (SQLException ex) { JOptionPane.showMessageDialog(null, "erreur JDBC : " + ex.getMessage()); } } public static void main(String[] args) { SimpleFenetre gui = new SimpleFenetre(); gui.setVisible(true); } } class Panneau extends JPanel { private ImageIcon rouge ; public Panneau(){ rouge =new ImageIcon("C:\\Documents and Settings\\BE\\Bureau\\a.JPG"); } public void paintComponent(Graphics g){ super.paintComponent(g); Image imRouge=rouge.getImage(); g.drawImage(imRouge,0,0,this); } }
j'ai l'impression que cette partie monque quelque chose
merci encore mes amisCode:
1
2
3
4
5
6 ImageIcon ii =new ImageIcon(resultat.getString("img")); Image ima; ima =ii.getImage().getScaledInstance(90,90,Image.SCALE_AREA_AVERAGING); JLabel l = new JLabel(new ImageIcon(ima));
je coince encore vous pouvez m'aider sur ce que je viens de faire pourquoi mon image ne s'affiche pas surle comosants :cry: :(
aider moi
Commence par aérer tes sources, séparer ce que tu fais en plusieurs classes:
Une fois que ce serà un tant soit peu moins le bordel avec des noms de variables un poil explicite et le tout bien indenté et commenté, je veux bien te filer un coup de main.
- Une pour la communication avec la base de données
- une pour l'aspect graphique
- une pour faire le lien entre les deux.
Mais avec le foutoir que tu mets en source, j'ai un tant soit peu la flemme.
Et si ton image ne s'affiche pas, il est plus que probable que ce soit dû à un mauvais chemin.
++
Code:
1
2
3
4
5
6
7
8
9
10
11
12 ImageIcon ii =new ImageIcon(resultat.getString("img")); Image ima; ima =ii.getImage().getScaledInstance(90,90,Image.SCALE_AREA_AVERAGING); JLabel l = new JLabel(new ImageIcon(ima)); pan=new Panneau(); pan.setLayout(null); jS.setBounds(450 ,100 ,90,90 ); pan.add(new JScrollPane(l)); // Où sont les bounds de ce JScrollPane ? pan.add(jS); //A supprimer, te bouffe le scrollpane que tu as déjà ajouté. getContentPane().add(pan);
Effectivement
Ajoutes plutôt ton JLabel de cette façon:Citation:
Envoyé par ulysse31
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 ImageIcon ii =new ImageIcon(resultat.getString("img")); Image ima; ima =ii.getImage().getScaledInstance(90,90,Image.SCALE_AREA_AVERAGING); JLabel l = new JLabel(new ImageIcon(ima)); pan=new Panneau(); pan.setLayout(null); jS.setViewportView(l); jS.setBounds(450 ,100 ,90,90 ); pan.add(jS); getContentPane().add(pan);
merci encore
j'ai enfin afficher l'image sur JScrolpane
voila l'image sur la fenetre
mon image avec la taille (256,192)Code:
1
2http://i17.tinypic.com/3y699vq.jpg
encore un pb pourquoi l'image affiché moche sur ma fenetre petite entourer d'un espace comme le lien indiqué
merci encore
Tu redimensionne ton image avec du getScaledInstance, donc forcément elle est trop petite pour remplir ton JScrollPane (à qui tu as donné une taille fixe => le NullLayout c'est Maaaaal, ce qui fait que la Border de ton JScrollPane apparait).
D'ailleurs getScaledInstace n'est pas franchement le must pour redimensionner une Image. C'est issue d'anciennes versions de java et depuis il y a des mécanismes un tant soit peu meilleurs qui sont apparus: http://today.java.net/pub/a/today/20...dinstance.html
merci ami jamais j'oublie ton aide :) :P :oops:
Donc, j'ai pu ajuster le code à ma manière et sa marche nickel. J'ai utilisé un panel dans lequel je met mes images dans des labelsCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url, userName, password); Statement instruction = conn.createStatement(); String sql="SELECT images FROM image"; JPanel panel = new JPanel(); Blob blob; int x = 0; ResultSet resultat = instruction.executeQuery(sql); while(resultat.next()){ blob = resultat.getBlob("images"); ImageIcon icon = new ImageIcon(blob.getBytes(1, (int)blob.length())); photo = new JLabel(icon); panel.add(photo); x++; System.out.println(x); } this.getContentPane().add(panel); }
bonjour,
Avez vous traité le cas lorsque la requête renvoie plusieurs URLs donc plusieurs images?
pourriez-vous me proposer une solution de visualisation?
d'avance Merci