12
votes

Table de défilement SWT Programmatiquement

Comment faire du rouleau vertical de la table SWT par programme? Je mettant en œuvre la fonction de recherche sur la table. Lorsqu'un élément a été trouvé, il sera défilé à l'élément trouvé.

swt

0 commentaires

3 Réponses :


33
votes

Il existe plusieurs méthodes que vous voudrez peut-être essayer: XXX

Autre que cela, je suggère d'utiliser un TableViewer de jface . Ensuite, vous faites défiler jusqu'à un article avec cette méthode: xxx


2 commentaires

Ouais. J'ai trouvé la solution moi-même creusant la nuit dernière dans SWT Docs avant de lire votre réponse. BTW, merci beaucoup.


S'il s'agit de la solution correcte, veuillez la marquer comme acceptée afin que d'autres développeurs confrontés à la même difficulté puissent le voir comme tel.



0
votes

Je ne sais pas vraiment ce dont vous avez besoin de la recherche, mais vous pouvez également envisager de filtrer la table pour accéder à l'élément désiré (type de recherche rapide).

Vérifiez-le: http://eclipsesource.com/blogs/2012/10/ 26 / Tableaux de filtrage-in-swtjface /

J'espère que cela aide, acclamations!


0 commentaires

1
votes

Mon travail à temps plein consiste à développer SWT (sur Linux), j'espère pouvoir fournir une réponse complète:

à partir d'un point de vue du code SWT (au moins sur GTK), il n'y a que 3 table Fonctions qui affectent le défilement via un appel natif interne gtk_tree_view_scroll_to _ * () code> p> xxx pré>

expliquer ce qu'ils font et comment les utiliser: P>

défilement vertical h2>

Ceci est effectué en réglant la mise au point ou en sélectionnant un élément de table particulier. p>

pour table: p>

    public static void main (String [] args) {
          Display display = new Display ();
            Shell shell = new Shell (display);
            Table table = new Table (shell, SWT.BORDER | SWT.MULTI);
            table.setHeaderVisible (true);
            Rectangle clientArea = shell.getClientArea ();
            table.setBounds (clientArea.x, clientArea.y, 100, 100);
            String[] titles = {"First", "Second", "Third", "Fourth", "Fifth"};
            for (int i=0; i<titles.length; i++) {
                TableColumn column = new TableColumn (table, SWT.NONE);
                column.setText (titles [i]);
            }
            for (int i=0; i<128; i++) {
                TableItem item = new TableItem (table, SWT.NONE);
            item.setText (new String [] {"" + i, ""+i, ""+i, ""+i});
            }
            for (int i=0; i<titles.length; i++) {
                table.getColumn (i).pack ();
            }

            shell.pack ();
            shell.open ();

            display.asyncExec(
                    // Sometimes table column sizes are computed later at runtime,
                    // to get around it, set the column index after initialization.
                    () -> table.showColumn(table.getColumn(4))
            );
            while (!shell.isDisposed ()) {
                if (!display.readAndDispatch ()) display.sleep ();
            }
            display.dispose ();
        }


6 commentaires

Cela sélectionnera également l'article. OP n'a pas mentionné que cela devrait arriver. En outre, il y a déjà une réponse détaillée avec 31 upvotes, je ne suis pas sûr que une autre réponse est requise.


@Baz j'ai fait plusieurs ateliers SWT. Dans mon expérience, les gens / nouveaux venus recherchent souvent des extraits de travail qu'ils peuvent ajuster et copier. La liaison à la snippet Repo aide les gens à trouver ces extraits.


Cela ne répond pas à la question cependant, car le code que vous avez lié à sélectionner également l'élément et ne le défilez pas.


@Baz J'ai mis à jour la réponse et a expliqué les choses en détail et a fourni un exemple de code. Je suis un ingénieur logiciel qui travaille sur le SWT à temps plein et je plaisante avec désinvolture sur Stackoverflow pour voir ce que les gens luttent avec. Faites-moi savoir si vous avez des questions / commentaires. Merci.


Je ne remets pas en question votre qualification ici. Tout ce que je disais, c'est que la réponse n'était pas tout à fait sur le point et que les réponses «link-seulement» peuvent être utiles à court terme, mais desserrées toute l'utilité lorsque le lien diminue. Ce que vous avez posté maintenant est une bonne réponse!


@Baz nah, tu avais raison. J'étais un peu paresseux quand j'ai répondu initialement. C'est bien d'avoir plus de réponses complètes.