Qu'est-ce que je voudrais faire, c'est être capable d'onglet entre les éléments de la table.
Je crée actuellement ma table comme celle-ci. p> mais je ne sais pas comment configurer la tabulation. Tout le reste travaille aussi loin que d'éditer des colonnes, montrant des données, etc. Je suis resté coincé sur cette dernière partie. P> Si j'ai manqué une documentation évidente ou des javadocs - Mes excuses et même montrant que ce serait bien. < / p> p>
5 Réponses :
Vous devez ajouter un Keylistener et définir la sélection ou la mise au point sur la cellule suivante:
tableViewer.getTable().addKeyListener(new KeyListener(){ public void keyPressed(KeyEvent e) { System.out.println("Key Pressed"); if (e.keycode == SWT.TAB) { System.out.println("Detected TAB key"); // set table viewer selection } } public void keyReleased(KeyEvent e) { System.out.println("Key Released"); }} );
org.eclipse.jface.Viewers.TableViewer n'accepte pas un Keylistener
Je ne sais pas si cela fonctionne, mais TableViewer.gettable () devrait l'accepter.
Je pense par onglet par défaut ne saute pas de cellule à la cellule dans une table SWT. Au lieu de cela, il traverse le contrôle suivant. Donc, vous devrez également le dire de ne pas traverser lorsque vous appuyez sur l'onglet
KeyListener keyListener = new KeyLisener() { public void keyPressed(KeyEvent evt) { if (evt.keyCode == SWT.TAB) { // There are numerous setSelection methods. I'll leave this to you. tableViewer.getTable().setSelection(...) } } public void keyReleased(KeyEvent evt){} } TraverseListener traverseListener = new TraverseListener() { public void keyTraversed(TraverseEvent evt) { if (evt.keyCode == SWT.TAB) evt.doit = false; } } tableViewer.getTable().addKeyListener(keyListener); tableViewer.getTable().addTraverseListener(traverseListener);
Le code pourrait être simplifié si le code de sélection ( tableviewer.getable.getable (). SetSelection (...) code> Dans cet exemple) a été placé dans le codage
keycode == swt.tab code> Branche du
Traverselistener code>. Cela épargnerait un
keylistener supplémentaire code>.
Bien que la solution TheHiatus em> affichée est très bas niveau et fonctionnera probablement (je ne l'ai pas testée), Jface vous donne un cadre pour ce problème spécifique. Voir le org.eclipse.jface.Viewers.TableViewerFocReCellManagerFocReCellManager
org.eclipse.jface.Viewers.cellnavigationtrategy code> Les classes pour résoudre ce problème. p>
C'est un pointeur utile, mais la réponse serait plus agréable avec certains échantillons de code ou d'explication comment les utiliser précisément.
Je ne pouvais pas obtenir le comportement souhaité avec un Traverselisener Code> (il ne traverserait pas dans la table), et j'ai eu du mal à le faire fonctionner avec un
FocusCellManager Code> et
Cellnavigationtrategy code>. J'ai enfin trouvé cette solution qui me permet d'inclure une colonne de colonne dans une ligne d'une ligne et d'activer automatiquement l'éditeur.
Viewer viewer = ...
TableViewerFocusCellManager focusCellManager =
new TableViewerFocusCellManager(
viewer,
new FocusCellHighlighter(viewer) {});
ColumnViewerEditorActivationStrategy editorActivationStrategy =
new ColumnViewerEditorActivationStrategy(viewer) {
@Override
protected boolean isEditorActivationEvent(
ColumnViewerEditorActivationEvent event) {
ViewerCell cell = (ViewerCell) event.getSource();
return cell.getColumnIndex() == 1 || cell.getColumnIndex() == 2;
}
};
TableViewerEditor.create(viewer, focusCellManager, editorActivationStrategy,
TableViewerEditor.TABBING_HORIZONTAL);
J'ai aussi dû mettre en œuvre la tabulation entre des éléments dans une table. Nous utilisons la grille de la nébuleuse comme table.
Premièrement, je devais supprimer la tabulation de la mise au point de l'empêcher de sortir de la table.
p>
Et puis j'ai ajouté un auditeur clé qui déplace la mise au point / la sélection à la cellule suivante: P>
J'ai aussi fait mon propre algorithme pour déplacer la sélection une cellule à droite et à la fin de la ligne, déplacez-la au début de la ligne suivante. Lorsque la fin de la table est atteinte, la sélection se retourne sur la première cellule de la table. P>
Cela a résolu le problème pour moi. P>
Dans quelle direction voulez-vous que vous comprenez?