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

Interfaces Graphiques en Java Discussion :

Faire une recherche sur JXTable


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 100
    Par défaut Faire une recherche sur JXTable
    Bonjour,
    Je souhaite faire un 'moteur de recherche' sur un JXTable. Ce composant à une fonction de recherche (Ctrl+f) mais j'aimerais pouvoir faire cette recherche à partir d'un JTextField (donc pas devoir appeler la messageBox par Ctrl F).
    Pouvez-vous m'aider ?
    Je vois bien dans les API qu'il y a une interface 'Searchable' mais je ne parviens pas à l'utiliser...

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    C'est très simple en passant par une JXFindBar:
    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
     
    import java.awt.BorderLayout;
     
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
     
    import org.jdesktop.swingx.JXFindBar;
    import org.jdesktop.swingx.JXTable;
     
    public class TestSearchPane {
     
        private JFrame f;
        private JXTable table;
        private JXFindBar bar;
     
        public TestSearchPane() {
            String[] titles = { "toto", "titi" };
            String[][] data = { { "allo", "bonjour" }, { "comment", "allez" },
                    { "vous", "?" } };
            table = new JXTable(data, titles);
            table.setColumnSelectionAllowed(true);
            table.setRowSelectionAllowed(true);
            bar = new JXFindBar(table.getSearchable());
     
            f = new JFrame();
            f.add(new JScrollPane(table));
            f.add(bar, BorderLayout.SOUTH);
            f.pack();
            f.setLocationRelativeTo(null);
            f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            f.setVisible(true);
        }
     
        public static void main(String[] args) {
            new TestSearchPane();
        }
    }

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 100
    Par défaut Faire une recherche sur data JXTable
    Merci,

    Enfin une réponse courte et claire ...
    Je ne connaissais pas ce composant !
    Ce qui est dommage c’est que les 3 boutons (recherche, précédent et suivant) me dérangent.
    De plus, j’aurais voulu intégrer un texte (Recherche…) dans le JTextField.
    Est-ce possible ?

    Marc

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    En reprennant le code de Sinok, avec une légère modif j'arrive à ceci :

    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
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
     
    import org.jdesktop.swingx.JXFindBar;
    import org.jdesktop.swingx.JXTable;
    import org.jdesktop.swingx.search.Searchable;
     
    public class TestSearchPane {
     
        private JFrame f;
        private JXTable table;
       private JTextField	field;
     
        public TestSearchPane() {
            String[] titles = { "toto", "titi" };
            String[][] data = { { "allo", "bonjour" }, { "comment", "allez" },
                    { "vous", "?" } };
            table = new JXTable(data, titles);
            table.setColumnSelectionAllowed(true);
            table.setRowSelectionAllowed(true);
            field = new JTextField();
            field.addActionListener(new ActionListener()
            {
    			@Override
    			public void actionPerformed(ActionEvent e)
    			{
    				String searchValue = field.getText();
    				Searchable s = table.getSearchable();
    				System.err.println("V =="+s.search(searchValue));
     
    			}
     
            });
     
            f = new JFrame();
            f.add(new JScrollPane(table));
            f.add(field, BorderLayout.SOUTH);
            f.pack();
            f.setLocationRelativeTo(null);
            f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            f.setVisible(true);
        }
     
        public static void main(String[] args) {
            new TestSearchPane();
        }
    }
    Lors d'une recherche, ca sélectionne automatiquement la case et en plus ca affiche la ligne si je ne m'abuse.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 100
    Par défaut
    Oui, effectivement, ça marche comme ça.
    Mais dans ce cas là, ça m'impose de respecter la casse (et je ne c pas si on c changer).
    Je suis difficile !!!

Discussions similaires

  1. faire une recherche sur la colonne d'une liste annuaire
    Par gracouille dans le forum SharePoint
    Réponses: 1
    Dernier message: 13/10/2008, 17h06
  2. Réponses: 3
    Dernier message: 11/10/2008, 13h32
  3. Comment faire une recherche sur un contenu s'il existe ou non ?
    Par 21247692 dans le forum Bases de données
    Réponses: 8
    Dernier message: 05/04/2008, 10h54
  4. Réponses: 19
    Dernier message: 12/04/2007, 15h11
  5. faire une recherche sur des "
    Par richard038 dans le forum Requêtes
    Réponses: 6
    Dernier message: 24/07/2006, 22h30

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