CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[JAVA] WaterMark sur un JTextField ?

Elmohe
Elmohe
Niveau 9
14 août 2014 à 19:44:20

Hi there, ça faisait longtemps !

Je fait un simple programme en java mais j'aurais besoin sur un JTextField "addnum", mettre un WaterMark, c'est à dire comme un peu sur votre barre de recherche rapide google bah y a écrit "Google", et quand on clique ça disparaît.
addnum.setText("WaterMark");
ne marche pas parce que le texte est comme du texte et donc addnum.getText(); renverra "WaterMark" si on ne fait rien :/ et en plus il faut effacer le texte.
J'ai aussi vu sur stack overflox une réponse qui disait

addnum.setToolTipText("WaterMark");, mais ça c'est quand on laisse la souris sur le texte du JTextField...

Je sais que c'est possible :'( !!! :help: please !

Aldebran
Aldebran
Niveau 10
14 août 2014 à 19:56:18

Je vois très bien ce que tu veux dire, mais Swing n'implémente rien de ce genre. Mais tu peux l'implémenter toi-même, ce n'est pas très compliqué. Tu peux créer une classe qui hérite de JTextField et qui gère tout ça proprement.

Pseudo supprimé
Pseudo supprimé 14 août 2014 à 19:59:15

Bah, @Override getText pour qu'elle ait le comportement attendu. Ou mieux, décore ton JTextField pour qu'il affiche cette chaîne de caractères (avec en plus le bon style) en "dehors" du champ de saisie à proprement parler (paintComponent, au pire).

Elmohe
Elmohe
Niveau 9
14 août 2014 à 20:01:30

C'est à dire que je fais un addnum.setText("WaterMark");, et je regarde pour le focus ? Mais alors c'est pas cool le watermark c'est pas sensé être la même couleur que le texte :/ Surtout que quand on appuie sur le bouton qui modifie une variable via getText() sans avoir le focus, la variable va être de valeur "WaterMark"... C'est très pas le complet Java hein. Mais on va arrêter de lister les défauts de Java sinon ça ira pas. Bon alors je vais bouder contre JAVA. Tchao. :D Nan mais c'est mal fait quand même. Je vais me contenter de ça alors.

Elmohe
Elmohe
Niveau 9
14 août 2014 à 20:02:52

Sorry Raspberry j'avais pas vu ton message quand je postais. Donc ouais mais le paintcomponent quoi. Ouais... et comment j'interagis avec paintcomponent depuis le focus event ?

Elmohe
Elmohe
Niveau 9
14 août 2014 à 20:59:35

Bon tant pis lock je fais sans :) Je vais pas alourdir exprès un truc tout léger pour ça, alors que je peux faire un Label ou quelque chose comme un ToolTip si on oublie. Merci quand même :)

Enderith
Enderith
Niveau 9
15 août 2014 à 20:40:38

Tu veux que ça soit écrit dans la zone où tu tapes le texte normalement ?

Elmohe
Elmohe
Niveau 9
15 août 2014 à 21:48:15

Oui mais je peux faire sans je l'ai fait en tooltip mais si maintenant tu as la solution je suis preneur :)

Enderith
Enderith
Niveau 9
16 août 2014 à 13:46:30

1/ Tu dois préparer ta textbox avec un message par exemple "Tapez votre adresse ici" (en gris et italique par exemple) http://puu.sh/aUNZ8/7a57b0d599.png
2/ Quand on clique dans la zone de texte pour la première fois, tu dois effacer le texte, remettre la police en regular et de couleur noire, pour cela il faut que tu ajoutes un listener par exemple onclick (désolé je connais pas Java par coeur)
3/ Ensuite tu entre ton adresse IP, par exemple 1.1.1.1 et tu continues à faire ce que tu veux sur le programme.
4/ Dans le ca o l'utilisateur laisse la boite de texte vide, tu dois retaper la 'watermark' comme tu appeles ça, tu ajoutes donc un event par exemple lostFocus (exemple ici http://stackoverflow.com/questions/18652543/textfield-validation-in-java-using-lostfocus-event ) et tu compares, si la boite de texte est vide tu remets la watermark, si la boite de texte n'est pas vide, tu ne touches à rien.

Enderith
Enderith
Niveau 9
16 août 2014 à 13:46:54

En somme tu ne peux rien faire d'automatique, tu dois le coder toi-même.

Bunyan
Bunyan
Niveau 17
16 août 2014 à 14:03:24

Ce que tu cherches à faire se nommer un placeholder. Watermark, c'est plutôt pour la photographie :)

En bref : les composants basique de Swing ne permettent pas de le faire nativement, il faut les modifier un peu.
De ce que j'ai trouvé : https://stackoverflow.com/questions/13033600/java-placeholder-on-textfield

Enderith
Enderith
Niveau 9
16 août 2014 à 14:39:03

Il permet de le faire nativement avec un algo a peu près comme j'ai dit non ? C'est bien ce que je fais en C# ... Bien que ça soit pas très propre.

Bunyan
Bunyan
Niveau 17
16 août 2014 à 14:59:25

C'est exactement ce que j'ai écrit : ils ne permettent pas de le faire nativement (i.e. : sans rien branler et naturellement, juste avec un setPlaceholder("Mon texte");), donc il faut les modifier un petit peu :)

Elmohe
Elmohe
Niveau 9
16 août 2014 à 16:49:18

Ouais bon en fait on peux dire que je laisse tomber quoi :) Mais une autre question : j'ai une hashmap que j'ai réussi (enfin !) à sérialiser, et je veux afficher toutes les valeurs sur un JPanel avec un GridLayout de 2 en x et la taille de la map en y, mais j'arrive pas à afficher les données, vu que je ne connais pas forcément le nom des clés... HELP !

String[]args
String[]args
Niveau 23
16 août 2014 à 18:55:24

map.keySet() ?

Elmohe
Elmohe
Niveau 9
17 août 2014 à 12:07:13

Ah ouais merci mais alors faut faire un set, y mettre la map, et après ???

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment