0 votes

problème avec les cases à cocher dans une colonne Jtable

J'ai une table J avec 6 colonnes où j'ai des cases à cocher dans la 6ème colonne. Je sors le texte dans la table J en utilisant les méthodes setValueAt() et getValueAt(). Pour la même table J, j'ai des contrôles Find, Replace et Replace All pour trouver, remplacer et remplacer tout le texte dans la table J. La cellule particulière sera focalisée pour trouver le texte, la cellule particulière sera focalisée et remplacera le texte avec le texte donné.

Mais les cases à cocher de la 6ème colonne sont perturbées et le texte apparaît dans cette colonne comme OUI ou NON (pour la case à cocher sélectionnée, j'ai utilisé OUI et la case à cocher désélectionnée, j'ai utilisé des chaînes NON). Voici mon exemple de code:``

StringTokenizer st1 = new StringTokenizer(trstring1, "\t");//trstring1 is the Jtable string
        for (i = 0; st1.hasMoreTokens(); i++) {
            for (j = 1; j < 6; j++) {
                rowstring = st1.nextToken();
                if (rowstring.contains(findTxt)) {
                    rowstring = rowstring.replace(findTxt, replaceTxt);
                    str = trstring1.replaceFirst(findTxt, replaceTxt);
                    mProcessQuestionTestItemTable.setCellSelectionEnabled(true);
                    mProcessQuestionTestItemTable.changeSelection(i, j, false, false);
                    mProcessQuestionTestItemTable.requestFocus();
                    System.out.println("I:" + i);
                    System.out.println("J:" + j);
                    mProcessQuestionTestItemTable.setValueAt(rowstring, i, j);

                }

              }`

1voto

bguiz Points 6226

J'ai une table J avec 6 colonnes où j'ai des cases à cocher dans la 6ème colonne. Par conséquent, vous devez boucler à partir des colonnes avec les indices 0 à 4.

Ceci :

        for (j = 1; j < 6; j++) {

devrait être ceci :

        for (j = 0; j < 5; j++) {

à la place. Si vous avez remarqué qu'en plus du texte indésirable apparaissant dans la 6ème colonne avec les cases à cocher, les fonctions de remplacement du texte ne fonctionnaient pas non plus pour les éléments de la 1ère colonne, ceci explique/résout également ce problème.

HTH.

p.s. Je suppose beaucoup de choses, reformulez votre question pour la rendre un peu plus claire si ce n'est pas ce que vous vouliez dire...


EDIT :

Juste pour développer mon commentaire :

Le tutoriel Java Swing est un bon point de départ pour savoir comment obtenir les valeurs booléennes à afficher dans les JTables sous forme de cases à cocher . Le point qui vous intéresse est celui où ils implémentent un TableModel personnalisé pour leur table en faisant :

class MyTableModel extends AbstractTableModel {

    ...

    public Class getColumnClass(int c) {
        return getValueAt(0, c).getClass();
    }

    ...
}

Dans votre cas, cela pourrait être quelque chose de plus explicite comme

    public Class getColumnClass(int c) {
        if (c == 7)
        {
            return Boolean.TYPE;
        }
        return String.class;
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X