Salut !
je suis a la recherche d'un API qui permet de faire ses propres infobulles , j'avait vu un api qui permettait de faire ca , mais impossible de le retrouver :/
Merci
Salut !
je suis a la recherche d'un API qui permet de faire ses propres infobulles , j'avait vu un api qui permettait de faire ca , mais impossible de le retrouver :/
Merci
quel genre de tooltip tu veut faire?
avec swing tu peut deja faire beaucoup. tu peux mettre des couleurs des image des composant aussi
comme il extend de JComponent tu peut presque tout faire.
qu'est ce que tu veut au juste?
je savait pas qu'on pouvais de base avec Swing ...Envoyé par bbclone
en gros je cherche une api ou une classe qui permet de faire facilement ses propres infobulles (comme msn par exemple)
ou comme le fait Azureus :
Euh pour moi ceci n'a rien à voir avec un infobulle, pour moi une infobulle c'est plutôt ceci:
Bon ensuite pour le genre de composants que tu cherches, au choix, soit en faisant joujou avec une JWindow(ou une JFrame avec un setDecorated(false), c'est la même chose) et du setPositionpour l'affichage progressif, si il y a besoin.
Sinon tu as forcément des projets qui t'ont déjà implémenté ça:
http://jtoaster.sourceforge.net/
http://staff.washington.edu/netghost/perkup/
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.
Pour ce qui est des infobulles façon msn, tu peut aller voir là http://jtoaster.sourceforge.net/
info bulle pour moi ca veut tootip. non?
j'ai vite fais un petit code qui montre comment tu peux avoir tes tooltip comme tu veut
tien teste ca tu vois que tu peux mettre tout ce que tu veux dans ton JTooltip.
le code est plutot simple a comprendre.
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
38
39
40
41
42 import javax.swing.JToolTip; /** * Created by IntelliJ IDEA. * User: bebe * Date: 09-Jun-2006 * Time: 09:38:09 * To change this template use File | Settings | File Templates. */ public class JMyOwnToolTip extends JToolTip { protected int columns = 0; protected int fixedwidth = 0; public JMyOwnToolTip() { updateUI(); } @Override public void updateUI() { setUI(MyOwnToolTipUI.createUI(this)); } public void setColumns(int columns) { this.columns = columns; this.fixedwidth = 0; } public int getColumns() { return columns; } public void setFixedWidth(int width) { this.fixedwidth = width; this.columns = 0; } public int getFixedWidth() { return fixedwidth; } }
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
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106 import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.CellRendererPane; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JToolTip; import javax.swing.plaf.ComponentUI; import javax.swing.plaf.basic.BasicToolTipUI; /** * Created by IntelliJ IDEA. * User: bebe * Date: 09-Jun-2006 * Time: 09:39:19 * To change this template use File | Settings | File Templates. */ public class MyOwnToolTipUI extends BasicToolTipUI { static MyOwnToolTipUI sharedInstance = new MyOwnToolTipUI(); static JToolTip myTooltip; protected CellRendererPane myRendererPane; private static JPanel myPanel = null; public static ComponentUI createUI(JComponent c) { return sharedInstance; } public MyOwnToolTipUI() { super(); } @Override public void installUI(JComponent c) { super.installUI(c); myTooltip = (JToolTip) c; myRendererPane = new CellRendererPane(); c.add(myRendererPane); } @Override public void uninstallUI(JComponent c) { super.uninstallUI(c); c.remove(myRendererPane); myRendererPane = null; } @Override public void paint(Graphics g, JComponent c) { Dimension size = c.getSize(); myPanel.setBackground(Color.RED); myRendererPane.paintComponent(g, myPanel, c, 1, 1, size.width - 1, size.height - 1, true); } @Override public Dimension getPreferredSize(JComponent c) { String tipText = ((JToolTip) c).getTipText(); if (tipText == null) { return new Dimension(0, 0); } String[] tipTextParts = tipText.split(";"); myPanel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = new Insets(10, 5, 10, 5); gbc.gridx = 0; gbc.gridy = GridBagConstraints.RELATIVE; gbc.fill = GridBagConstraints.HORIZONTAL; myPanel.add(new JScrollPane(new JTextArea(tipTextParts[0])), gbc); gbc.fill = GridBagConstraints.NONE; myPanel.add(new JLabel(tipTextParts[1]), gbc); myPanel.add(new JButton(tipTextParts[2]), gbc); myRendererPane.removeAll(); myRendererPane.add(myPanel); Dimension dimension = myPanel.getPreferredSize(); dimension.height += 1; dimension.width += 1; return dimension; } @Override public Dimension getMinimumSize(JComponent c) { return getPreferredSize(c); } @Override public Dimension getMaximumSize(JComponent c) { return getPreferredSize(c); } }pour changer les duree d'afichage
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
38
39
40
41 import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JToolTip; import javax.swing.ToolTipManager; /** * Created by IntelliJ IDEA. * User: bebe * Date: 09-Jun-2006 * Time: 09:38:46 * To change this template use File | Settings | File Templates. */ public class MyOwnTooltipTest { public static void main(String[] args) { JFrame f = new JFrame("Special tooltip demo..."); JButton button = new JButton("My Button with special tooltip") { public JToolTip createToolTip() { return new JMyOwnToolTip(); } }; button.setToolTipText("text for JTextArea....." + "\n" + "\n" + "\n;" + "text on the label;and now text on the button"); f.setLayout(new FlowLayout()); f.add(button); button = new JButton("a button with basic tooltip"); button.setToolTipText("A tooltip"); f.add(button); f.pack(); f.setLocationRelativeTo(null); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
la duree apres combien de temps il doit s'afficher
comment reagir a la souris... utilise alors TooltipManager (javax.swing.TooltipManger)
Y'a beaucoup de code qd même pour faire un simple ToolTip...
Je trouve que dans une future version de java (la 1.6?), ça serait pas mal en plus du .setToolTipText(String) d'avoir un .setToolTipComponent(Component) comme ça on mettrait directement un JPanel...
lol @beaucoup de code.
tu vois pas que dans le code que j'ai mi tu peut avoir un panel?
y'a moyen de faire plus simple si tu veut moin de code. tu redefini juste
tu retourne ce que tu veux qui extend de JToolTip et comme c'est un Container tu peut mettre dedans tout qu'est ce que tu veut comme un panel plus ou moins.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public JToolTip createToolTip() { return new JMyOwnToolTip(); }
c'est ca la puissance de java. tu peut faire tout qu'est ce que tu veux.
Quand je dis beaucoup de code, c'est en voyant "MyOwnToolTipUI" et "JMyOwnToolTip"... Tu es vraiment obligé de passer par là pour faire un JPanel dans un ToolTip? (je n'ai jamais compris comment marchaient les JToolTip, du coup j'utilise toujours setToolTipText, mais c limité...)Envoyé par bbclone
j'ai aussi utiliser setTooltipText
c'est pas limiter c'est extensible
moi je fais ca souvent. quand je veut un truc qui est un peu different je repart de Basic*UI (BasicButtonUI, BasicComboBoxUI ...)
tu peux alors repainter les composants comme tu veux.
t'es pas obliger de passer par la comme je t'ai di tu peux passer par quelque chose comm ca:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 JButton button = new JButton("My Button with special tooltip") { public JToolTip createToolTip() { JToolTip myToolTip = new JToolTip(); myToolTip.setBackground(Color.CYAN); String tipText = getToolTipText(); /* fais ici tout ce que tu as envie */ return myToolTip; // return new JMyOwnToolTip(); } }; button.setToolTipText("special tooltip");
En gros, le plus simple pour faire un ToolTip avec un JPanel, qui contient par exemple une image à gauche et du texte à droite, tu fais comment (sans utiliser de MachinUI)?
Par exemple, si je veux une info-bulle de ce type:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 +-------+-------------------+ | OOOOO | Ceci est un texte | | O | dans un JToolTip. | | O | À gauche c'est 1 | | O | image, avec un I | | OOOOO | comme Image. | +-------+-------------------+
Tu peut alors mettre un tooltip en html?
tu dois rien redefinir si c'est juste une image que tu veut mettre.
plus simple je peut pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 JButton button = new JButton("My Button with special tooltip"); button.setToolTipText("<html><img src="+path/to/picture/+"> text ....avec des <br>... </html>");
Non, justement, sans HTML...Envoyé par bbclone
L'image n'est pas forcément un fichier, mais peut-être un BufferedImage...
tes difficile toi
sans utiliser de MachinUI et sans HTML c'est du chipotage.
le probleme avec les tooltip c'est qu'il peuve gerer juste un message et meme pas sur plusieurs ligne. alors soit tu bidouile pour que ca marche en surchargeant la methode createTooltip de ton Component (ce qui est moche)
j'ai pas tester mais en theorie ca doit pouvoir fonctionner.
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 JButton myButton = new JButton("Button") { public JToolTip createToolTip() { return new JToolTip() { JPanel myPanel = new JPanel(); { setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 0)); JLabel icon = new JLabel(new ImageIcon(....)); add(icon); add(new JLabel(getTipText())); myPanel.setPreferredSize(... a calculer ...); add(myPanel); } public Dimension getPreferredSize() { return myPanel.getPreferredSize(); }
mais j'aime pas faire des truc comme ca
j'ai l'impression de faire du swing a l'envers
ou tu passe par un MachinUI c'est encore mieux alors
Bonjour,
Votre tooltip est pas mal pour de la présentation graphique mais peut on implémenter quelque chose de façon à pouvoir utiliser les boutons qui sont sur le tooltip et lancer ainsi des actions ?
Merci pour votre réponse
Salut,
On peut créer un composant de type JToolTip qui contiendra tout ce que tu veux : JButton, JTextArea, JCheckBox...
Autre exemple ici.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Salut,
Le sujet est tellement intéressent que je me sens flatté pour m'y mettre.
Je reviens vers vous d'ici peu...
Christian,
Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...
Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
Tu peux trouver la réponse à ta question dans la FAQ
Retrouvez mon tutoriel sur la consommation des services web SOAP
Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager