IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

KeyListener gestion des fleches JTable


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 24
    Points : 20
    Points
    20
    Par défaut KeyListener gestion des fleches JTable
    Bonjour,

    J'ai un JTable avec un model au format JTexField et je voudrai pouvoir gere les fleches du clavier. C'est à dire des que je me deplace dans les differentes cellule avec les fleches que les fleches aient comme réaction de cliquer.
    Car la si je me deplace avec les fleches et que je saisie une donnée elle est affichée mais elle n'est pas prise en compte il faut que je clique pour que le curseur apparaisse et que je puisse saisir une donnée afin que celle si soit prise en compte.

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    un petit bout de ton code ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    je veux bien te donner un bout de mon code!!lol
    le voici:
    Creation de ma JTable et de mon model:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		tm =new TableModel(lig,col);
    		table = new JTable ();
    		table.getTableHeader().setReorderingAllowed(false);
    		table.setModel(tm);
    		table.setDefaultEditor(Object.class, new MyDefaultCellEditor(new JTextField()));
    		scrollPane.setViewportView(table);
    et les traitement de mon focusListener
    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
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
     public class MyDefaultCellEditor extends DefaultCellEditor implements FocusListener, KeyListener {
    	//	actionHandler = new CellEditorActionHandler();
     
    		public MyDefaultCellEditor(JTextField textField) {
    			super(textField);
    			setClickCountToStart(0);
    			editorComponent = textField;
    			editorComponent.setBorder(null);
    			editorComponent.addFocusListener(this);
    		}
     
    		public void focusGained(FocusEvent e) {
    			ligne = table.getSelectedRow();
    			colo = table.getSelectedColumn();
    		}
     
    		public void focusLost(FocusEvent e) {
    			 pane= new JOptionPane();
    			 String temp = table.getValueAt(ligne, colo).toString();
    			 int etat = 0;
    			 String quantite, Prix;
     
    		    //GESTION DE LA COLONNE SAISIE NUM ARTICLE
    			 if(table.getSelectedColumn()==0){
    				if (temp.length() != 0) {
    				   int temp2 = Integer.parseInt(temp);
     
    				   for (int i = 0; i < liste.size(); i++) {
    					 if (temp2 == liste.get(i)) {
    					   pane.showMessageDialog(null, "Cet article a déjà été saisi","Avertissement",pane.WARNING_MESSAGE);
    					   table.setValueAt("", ligne, 0);
    					   etat = 1;
    					 }
    				   }
     
    				   if (etat == 0) {
    					  liste.add(temp2);
    					  for (int i = 0; i < arts.getArticle().size(); i++) {
    						 if (temp2 == arts.getArticle().get(i).getNumArt()
    								&& arts.getArticle().get(i).getQuantiteArt()!=0) {
    						   	 num=i;
    							 int nbArt=arts.getArticle().get(i).getQuantiteArt();
    							 int trouve=0;
     
    							 for(int etatArt=0; etatArt<nbArt; etatArt++){
    								 if(arts.getArticle().get(i).getEtatArt().get(etatArt)==1 && trouve==0 ){
    							        int choix = pane.showConfirmDialog(null, "Il existe un article réservé.\nVoulez-vous le vendre maintenant?",
    							       			"Article Reservé", JOptionPane.WARNING_MESSAGE);
    							        if (choix ==0) 	{							            	
    							        	arts.getArticle().get(i).getEtatArt().set(etatArt, 2);
    										Utils ut = new Utils();
    										ut.Marshall(arts);
    							        }
    									else {
    										int cpt=0;
    										for(int etatArt2=0; etatArt2<nbArt; etatArt2++){
    											if(arts.getArticle().get(i).getEtatArt().get(etatArt2)==2){
    												cpt++;
    											}
    										}
    										if (cpt==0) {
    											for (int x = 0; x < liste.size(); x++) {
    												if (temp2 == liste.get(x)) {
    													liste.remove(x);
    												}
    											}
    										}
    									}
    							        trouve=1;
    							 	 }
    							 }
    							 int trouve1=0;
    							 for(int etatArt=0; etatArt<nbArt; etatArt++){
    								 if(arts.getArticle().get(i).getEtatArt().get(etatArt)==2 && trouve1==0){
    									table.setValueAt(""+1, ligne, colo+1);
    									quantite= table.getValueAt(ligne, colo+1).toString();
     
    									table.setValueAt(arts.getArticle().get(i)
    													.getDescriptifArt(), ligne, colo + 2);
     
    									table.setValueAt(String.valueOf(arts.getArticle()
    													.get(i).getPrixCliArt()), ligne, colo + 3);
    									Prix=table.getValueAt(ligne, colo+3).toString();
    									prixHT=Float.parseFloat(quantite)*Float.parseFloat(Prix) ; 
    									prixTT= prixTT + prixHT;
    									table.setValueAt(String.valueOf(prixHT), ligne, colo + 4);
    									jlbTotalBord.setText((String.valueOf(prixTT)));
    									prixTTC=(float)(prixTT*1.195);
    									jlbTotalTtcR.setText((String.valueOf(prixTTC)));
    									trouve1=1;
    								 }
    							 }
    						 }
    					  }
     
    					  if (table.getValueAt(ligne, 2).toString().length()!=0){
    						  tm.addRow("");	
    					  }
    					  else{ 
    						  pane.showMessageDialog(null, "Cet article n'existe pas!",
    							      "Avertissement",pane.WARNING_MESSAGE);
    						  table.setValueAt("", ligne, 0);
    					  }
    				   }		
    				}
    			}
     
    			//GESTION DE LA SAISIE DE LA QUANTITE
    			if(table.getSelectedColumn()==1){
    				int QteArt=arts.getArticle().get(num).getQuantiteArt();
    				int count=0;
     
    				for(int nbArt=0; nbArt<QteArt; nbArt++){
    				   if (arts.getArticle().get(num).getEtatArt().get(nbArt)==1 || arts.getArticle().get(num).getEtatArt().get(nbArt)==2){
    						count++;
    				   }
    				}
     
    				for (int i = 0; i < arts.getArticle().size(); i++) {
    					int nbQuantite= Integer.parseInt(table.getValueAt(ligne, 1).toString());
    					int ArtNum= Integer.parseInt(table.getValueAt(ligne, 0).toString());
    					if (ArtNum == arts.getArticle().get(i).getNumArt()&& 
    						arts.getArticle().get(i).getQuantiteArt()!=0) {					
    						if(nbQuantite<=count){
    							int nbArt=arts.getArticle().get(i).getQuantiteArt();
    							int trouve=0;
    							for(int etatArt=0; etatArt<nbArt; etatArt++){
    								if(arts.getArticle().get(i).getEtatArt().get(etatArt)==1 && trouve==0 ){
    									int choix = pane.showConfirmDialog(null, "Il existe un article réservé.\nVoulez-vous le vendre maintenant?",
    											"Article Reservé", JOptionPane.WARNING_MESSAGE);
    									if (choix ==0) 	{							            	
    										arts.getArticle().get(i).getEtatArt().set(etatArt, 2);
    										Utils ut = new Utils();
    										ut.Marshall(arts);
    									}
    									else {
    										int cpt=0;
    										for(int etatArt2=0; etatArt2<nbArt; etatArt2++){
    											if(arts.getArticle().get(i).getEtatArt().get(etatArt2)==2){
    												cpt++;
    											}
    										}
    										if (cpt>0) table.setValueAt(""+cpt, ligne, 1);
    										else 
    											pane.showMessageDialog(null, "jereror: "+count,
    												       "Avertissement",pane.WARNING_MESSAGE);
    									}
    									trouve=1;
    								}
    							}
    							int trouve2=0;
    							for(int etatArt=0; etatArt<nbArt; etatArt++){
    								if(arts.getArticle().get(i).getEtatArt().get(etatArt)==2 && trouve2==0){
    									quantite= table.getValueAt(ligne, colo).toString();							
    									table.setValueAt(String.valueOf(arts.getArticle()
    										.get(i).getPrixCliArt()), ligne, colo + 2);
    									Prix=table.getValueAt(ligne, colo+2).toString();
     
    									prixHT=Float.parseFloat(quantite)*Float.parseFloat(Prix) ;
    									System.out.println("le prix HT est "+prixHT);
    									prixTT= prixTT - Float.parseFloat(Prix);
    									System.out.println("le prix avant est "+prixTT);
    									prixTT= prixTT + prixHT;
    									System.out.println("le prix apres est "+prixTT);
    									table.setValueAt(String.valueOf(prixHT), ligne, colo + 3);
    									jlbTotalBord.setText((String.valueOf(prixTT)));
    									prixTTC=(float)(prixTT*1.195);
    									jlbTotalTtcR.setText((String.valueOf(prixTTC)));
    									trouve2=1;
    								}
    							}
    						}
    						else{
    							pane.showMessageDialog(null, "la quantite est superieur a la quantite existante qui est: "+count,
    									       "Avertissement",pane.WARNING_MESSAGE);
    							float prixHt=Float.parseFloat(table.getValueAt(ligne, 4).toString());
    							jlbTotalBord.setText(""+0);
    							jlbTotalTtcR.setText(""+0);
    							table.setValueAt("", ligne, 4);
    						}
    				   }
     
    				}
    			}
           }
    Mais bon je veux surtout savoir si c'est possible ce que je demandais!!!
    Merci

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    dsl je vois vraiment pas (à part setEditable(true) mais ça m'etonnerais)
    Bonne chance à toi

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    Il n'y a aucune possibilté de dire si j'utilise les fleches des mon clavier ds mon JTable et bien ca fait comme un clique de souris???

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Points : 143
    Points
    143
    Par défaut
    Salut,

    Tu as du bol j'ai fait ce code ce matin ... lol

    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
     
              // Recuperation du rectangle représentant la cellule à cliquer
              Rectangle w_r = maTable.getCellRect( ligneAEditer, colonneAEditer, false);
              // Récuperation des coordonnées depuis le rectangle
              Point w_p = new Point( w_r.x, w_r.y);
              // Transformation des coordonnées en coordonnées relatives au point haut gauche de l'écran
              SwingUtilities.convertPointToScreen( w_p, c_list);
     
              try {
                // Création d'un robot qui va travailler pour nous
                Robot w_rb = new Robot();
                // On déplace la souris au MILIEU de la case souhaitée
                w_rb.mouseMove( w_p.x+(w_r.width/2), w_p.y+(w_r.height/2) );
                // On clique ! Rappel un clic c'est appuyer puis relacher le bouton
                w_rb.mousePress( InputEvent.BUTTON1_MASK );
                w_rb.mouseRelease( InputEvent.BUTTON1_MASK );
                // Ici on peu eventuellement revenir au point initial si on l'a sauvegardé pour que l'opération soit transparente pour l'utilisateur
              } catch (AWTException e) {
                e.printStackTrace();
              }
    Voila, en esperant avoir pu t'aider, remplaces les quelques variables par les tiennes et HOP ...

  7. #7
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    Juste une question sur ton code JamesP : Est-ce que l'utilisateur voit le déplacement de la souris ?

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Points : 143
    Points
    143
    Par défaut
    J'avais anticipé la question :
    // Ici on peu eventuellement revenir au point initial si on l'a sauvegardé pour que l'opération soit transparente pour l'utilisateur
    Donc si tu le fait pas, OUI l'utilisateur voit sa souris apparaitre d'un coup ou TOI tu l'a décidé !

  9. #9
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    Donc en faite quand tu déplaces ta souris, elle est "invisible" ?

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Points : 143
    Points
    143
    Par défaut
    Alors admettons que :
    - la souris se trouve au point A
    - je me rends au point B

    la souris disparait du point A et apparait au point B, tu ne vois pas le chemin qu'elle parcours ... C'est instantané ...

    Je crois qu'en fait c'était ca ta question ...

  11. #11
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    oui c'etait bien ça. Merci de m'avoir éclairci là dessus car je ne maitrise pas vraiment cette technologie. D'aprés ce que j'en avait entendu, on la déconseiller car elle pouvait destabiliser l'utilisateur. Mais s'il ne voit rien alors c'est parfait. Merci encore.

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Points : 143
    Points
    143
    Par défaut
    Oui faire attention a utilisateur, a utiliser avec précaution !

    Apres j'utilise ça car je sais pas faire autrement pour le moment, et puis finalement je vais peut être en tirer avantage de ce déplacement de osuris ^^

Discussions similaires

  1. gestion des Jtable et defaultTableModel avec un vecteur
    Par sebac dans le forum Général Java
    Réponses: 0
    Dernier message: 10/06/2011, 00h05
  2. Gestion des évènements d'un JTable
    Par chti_juanito dans le forum Composants
    Réponses: 16
    Dernier message: 06/06/2006, 16h03
  3. [JTable] gestion des événements
    Par soulhouf dans le forum Composants
    Réponses: 4
    Dernier message: 19/08/2005, 13h21
  4. Réponses: 4
    Dernier message: 04/07/2002, 12h31
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo