10
votes

JTABLE - Obtenir une cellule en mode édition sur l'appui de l'onglet

Ceci est peut-être une solution triviale, mais je suis à la fin de mon attache, donc j'espère que quelqu'un peut aider.

J'utilise une JTABLE qui a un rendu personnalisé et un éditeur personnalisé pour un ensemble de colonnes.
Le rendu utilise un composant Jlabel et l'éditeur utilise un composant JSpinner.
Nos utilisateurs veulent pouvoir entrer des valeurs dans une colonne, puis appuyer sur onglet ou entrer pour vous déplacer dans la cellule modifiée suivante de la table.
Si je comprends bien, il s'agit du comportement par défaut pour une JTABLE.

Cependant, cela ne semble pas fonctionner correctement pour moi. Jusqu'à ce que l'utilisateur clique sur la cellule, seul le jlabel est affiché.
Le Jspinner (c'est-à-dire Celleditor) est uniquement affiché lorsqu'un utilisateur double clic sur la cellule. Donc, on dirait que la cellule est en mode "Edit" uniquement sur les souris à souris, mais pas quand il se concentre.

Comment puis-je obtenir la cellule pour passer en mode édition dès sa mise au point?


0 commentaires

3 Réponses :


6
votes

Vous pouvez y parvenir de manière programmative, vous écoutez simplement les événements de mise au point sur la cellule, sur la mise au point et l'édition autorisés, commencez à éditer.

Plus sur ce thread et Exemple


0 commentaires

21
votes

Merci N00213F. Le fil et l'exemple de votre message ont été utiles. En surchargeant la méthode CHANGELLECTION FORT> EN JTABLE, comme indiqué dans le thread, des contrôles JTAble Si une cellule est modifiée chaque fois que la sélection est modifiée. Si la cellule est modifiable, elle affichera le Celleditor et transférera la mise au point sur le composant éditeur.

Pour la complétude, voici ma solution: P>

  JTable myTable = new javax.swing.JTable()
  {
            public void changeSelection(final int row, final int column, boolean toggle, boolean extend)
            {
                super.changeSelection(row, column, toggle, extend);
                myTable.editCellAt(row, column);
                myTable.transferFocus();
            }
  };


1 commentaires

Pourquoi ne pas utiliser le mot clé ?



3
votes

Voici un extrait de code que j'ai mis en place pour un projet sur lequel je travaillais. Le code a été testé et vérifié pour une table contenant des cellules non modifiables dans la première et dernière colonne. La classe limite la tabulation uniquement sur les cellules modifiables de la table. Il prend également en charge la tabulation de décalage à l'onglet en marche arrière.

JTable myTable = new JTable();
// Set up table attributes....
JTableCellTabbing.setTabMapping(myTable, 0, NUM_ROWS, 1, (NUM_COLS-1));


0 commentaires