Bonjour ,
j'aimrai savoir comment inserer une image à gauche d'un JTextField ,
j'ai cherché un peu et j'ai trouvé l'utilisation JEditorPane
(émoticone)
http://www2.0zz0.com/2008/08/19/09/720961225.jpg
Version imprimable
Bonjour ,
j'aimrai savoir comment inserer une image à gauche d'un JTextField ,
j'ai cherché un peu et j'ai trouvé l'utilisation JEditorPane
(émoticone)
http://www2.0zz0.com/2008/08/19/09/720961225.jpg
Si tu veux juste afficher une image fixe à coté d'un JTextField, le plus simple et d'utiliser un JLabel que tu place à coté du JTextField et où tu place une icône.
Salut,
Sous classe JTextField et surcharge paintComponent :
Où icone est un objet Icon.Code:
1
2
3
4
5 @Override protected void paintComponent(final Graphics g) { super.paintComponent(g); icone.paintIcon(null, g, x, y); }
Où x et y sont les coordonnées où tu veux afficher l'icone.
merci beaucoup pour vos réponse :
pour tchize_ , c'est simple mais j'ai pas arrivé à le faire ,
comment je peut ajouter le Jlabel ou JTextField ?
j'ai fait :
pour visiwi :Code:
1
2
3 JTextField text=new JTextField(); JLabel l=new JLabel(new ImageIcon("images\\omag\\user.png")); text.set ??
merci beaucoup ,ça marche bien ,toujours une réponse efficace.
Comment je peut placer le curseur aprés l'image ?
Pour le label, tu as une méthode setIcon (regarde la javadoc).
EDIT -> J'ai répondu trop vite je crois. Tel que l'a suggérer tchize_, il suffit de placer le JLabel juste à côté du JTextField avec le layout donc...
Pour le curseur dans le JTextField, il suffit (je pense) de modifier l'Insets.
Code:
1
2
3
4
5
6 @Override public Insets getInsets() { Insets i = super.getInsets(); i.left += icone.getIconWidth() + 2; return i; }
merci encore visiwi
pour avoir un JLable avec image en peut faire aussi
mais je peut pas inserer le JLabel dans un JTextField ,Code:
1
2
3 JLabel l=new JLabel(new ImageIcon("images\\omag\\user.png")); // l.setIcon(new ImageIcon("images\\omag\\user.png");
meme si j'utilise :
pour ta solution pour le curseur ,ça marche pas maintenant ,le JTextField est desactivé je peut pas editerCode:
1
2
3 l.setLabelFor(text);
j'ai fait ceci :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public class textF extends JTextField{ Icon icone=new ImageIcon("images\\omag\\user.png"); protected void paintComponent(final Graphics g) { super.paintComponent(g); this.icone.paintIcon(null, g,0,0); } public Insets getInsets() { Insets i = super.getInsets(); i.left += icone.getIconWidth() + 10; return i; } }
le JLabel se met au sein du meme composant que ton JTextField:
Code:
1
2
3
4
5
6 JPanel panel = .... // Le panel où tout va JLabel label = new JLabel(new ImageIcon(....)); JTextField textField = new JTextField(); panel.add(label); panel.add(textField);
merci tchize_
ça je peut le faire , mais on ne peut pas le mettre à l'interieur de JTextField
la classe ci dessu me permet de faire ça sans problème , le problème maintenant et de faire placer le curseur aprés l'image
Pour le textField cela ne vient pas du code que je t'ai donné (ça marche), mais d'autre chose (peut être que tu l'empêche d'être editable).
Pour le label l'idée de tchize_ était de mettre le label à gauche du TextField en le plaçant avec un layout, opération classique. Pas de le mettre dans le TextField, ce qui est d'ailleurs un non sens.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 import java.awt.Graphics; import java.awt.Insets; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JTextField; public class Test extends JFrame { private MyJTextField tf = new MyJTextField(); public static void main(String[] args) { new Test(); } public Test() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); add(tf); pack(); setVisible(true); } public class MyJTextField extends JTextField{ Icon icone=new ImageIcon("icone.png"); protected void paintComponent(final Graphics g) { super.paintComponent(g); this.icone.paintIcon(null, g,0,0); } public Insets getInsets() { Insets i = super.getInsets(); i.left += icone.getIconWidth() + 10; return i; } } }
merci visiwi pour votre patience
j'ai pris ton code comme il est et toujours Le JtextField est non editable ,
alors qu'il l'est si j'enleve la methode d'insets
Dans le code que je t'ai donné le TF est parfaitement éditable.
je confirme :)
merciiiiiiiii beuacoup,moi aussiiii je confirme :lol:
j'ai pensé à mon look and feel (liquid) ,c'est celui qu'empeche l'edition de JTextField !!!!!!!!!
quelle est la relation !!!!!
quand j'utilise le look de system le JTextField est editable , et quand j'utilise le look liquid le JTextField est non editable , donc quelle est la relation entre le look et l'edition de JTextField ?
Je ne connais pas liquid, mais il est probable qu'il y a une option du LAF qui permet de rendre tous les JTextComponent éditable ou non. Peut-être as-tu utilisé cette option (ou bien que c'est le paramétrage par défaut de l'option) ?
merci ,
les JTextComponent sont éditable par defaut avec ce look, sauf dans ce cas ,
en fait le look liquid a plusieurs options propres (lien suivant) , mais j'ai pas trouvé une qui concerne les JTextComponent , je pense qu'il faut voir l'utilisation des insets dans ce look,
https://liquidlnf.dev.java.net/
J'ai essayé ce LAF, et effectivement, c'est bien lui qui pose problème. Pour l'instant j'ai pas de solution.
le lookandfeel s'attends probablement pas à ce que le JTextField se dessinne de lui même, vois avec les auteurs/mailing list du look and feel en question comment contourner le problème.
un grand merci pour vous sur ces efforts,
j'ai pris beaucoup de choses avec vous dans cette discussion,
gardez votre efficacité