Aller au contenu

Petit probleme en java, rien de grave


NiTrOuS

Messages recommandés

Bonjour à tous,

voilà je voudrais faire un controle de saisie dans un textfield. Pour cela, j'utilise le code suivant:

public void jTextField1_keyTyped(KeyEvent e) {
	String test[]={"1","2","3","4","5","6","7","8","9","0"};
	 if(e.getKeyChar()==test[])
		 e.consume();
}

Apparement, il n'aime pas trop mon

if(e.getKeyChar()==test[])

Je sais que j'ai fait une erreur quelque part mais ou ?

Si je fais

public void jTextField1_keyTyped(KeyEvent e) {
	 if(e.getKeyChar()=='1'
		 e.consume();
}

ca marche, mais je n'arrive pas a appliquer avec une chaine de caractères

Lien vers le commentaire
Partager sur d’autres sites

Tu ne peux pas comparer un char (e.getChar()) avec un tableau de caractère (test[]).

T'as deux solutions, soit tu poses un filtre sur le textfield, soit tu fais une boucle ou tu compares ton caractère tapé avec chaque valeur du tableau.

En terme de vitesse, le filtre de saisi est bien plus rapide.

Pour créer un maskFormatter (filtre de saisi), rien de plus simple:

/**
  * Permet de ne saisir que des chiffres
  * @return MaskFormatter
  */
 public MaskFormatter createFormatter() {
MaskFormatter formatter = null;
String mask = "*";
try {
  for (int i = 0; i < 256; i++) {
	mask += "#";
  }
  formatter = new MaskFormatter(mask);
}
catch (java.text.ParseException exc) {}
formatter.setValidCharacters("0123456789");
return formatter;
 }

et à la déclaration de ton JtextField:

//On crée le JTextField
jtf = new JFormattedTextField(createFormatter());

Conernant les imports nécessaires:

import javax.swing.text.*; de vrait faire l'affaire.

Cordialement, AirChtit

Lien vers le commentaire
Partager sur d’autres sites

Désolé pou rle temps de réponse, j'atais un peu dehors par ce temps...

donc, si ma solution ne te plait pas pour une raison ou pour une autre, il te suffit de passer par un booléen que tu changes si l'élément ne correspond pas.ou correspond, c'est au choix.

exemple:

public void jTextField1_keyTyped(KeyEvent e) {
	String test[]={"1","2","3","4","5","6","7","8","9","0"};
	boolean check = false;

	 //Parcours du tableau
	 for (int i =0; i< test;length; i++){
		if(e.getKeyChar()==test[i])
			check = true;
		   break();
	 }
	 //Si on n'a pas de correspondance:
	if (check==false)  e.consume();
}

J'imagine que quelquechose comme ça devrait fonctionner, après niveau optimisation, c'est franchement pas top, j'ai mis un break pour éviter les recherches inutiles mais c'est pas très propres non plus, on évite en théorie.

Maintennt, entre code accessible et code qui demande à regarder dans l'api, c'est toi qui vois.

Sur ce, bonne soirée.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

le titre de ce sujet étant approprié je n'ai pas jugé en créer un autre...

en effet j'ai un petit souci avec un menu déroulant vertical en java, mes sous menus restent toujours apparent.

<div id="menuv">

<dl>

<dt onmouseover="javascript:montre('smenu1');" onmouseout="javascript:montre();">Menu</dt>

<dd id="smenu1" onmouseover="javascript:montre('smenu1');" onmouseout="javascript:montre();">

<ul>

<li><a href="http://"> sous menu 1</a></li>

<li><a href="http://">sous menu 2</a></li>

</dd>

</dl>

<script type="text/javascript">

<!--

window.onload=montre;

function montre(id) {

var d = document.getElementById(id);

for (var i = 1; i<=10; i++) {

if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}

}

if (d) {d.style.display='block';}

}

//-->

</script>

</div>

On m'avait conseillé de mettre onmouseover dans la balise dl ou div mais cela ne semble pas fonctionner.

Ps ceci est pour un blog, donc je ne suis pas "maitre" de tout mais pourtant mon menu déroulant horizontal tourne sans problème. (mon blog)

Merci

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...