2009-12-02 9 views
0

J'ai un Jtable avec 6 colonnes où j'ai des cases à cocher dans la 6e colonne.Je suis sortie du texte dans JTable en utilisant les méthodes setValueAt() et getValueAt(). Pour le même Jtable J'ai trouver, remplacer et remplacer tous les contrôles pour trouver, remplacer et remplacer tout le texte que je jtable. Le cel particulier sera focalisé pour trouver le texte. La cellule particulière sera focalisée et remplacera le texte avec le texte donné. Mon problème est, au moment de remplacer le texte avec le texte donné, im focalisant la cellule particulière et utilisant setValueAt() pour remplacer. Mais les cases à cocher dans la 6ème colonne sont dérangées et le texte apparaît dans cette colonne comme OUI ou NO (Pour la case à cocher sélectionnée, j'ai utilisé OUI et Désélectionné j'ai utilisé des chaînes NON). Voici mon exemple de code: ``problème avec les cases à cocher dans la colonne Jtable

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); 


       } 

       }` 

Répondre

1

J'ai un jtable avec 6 colonnes où j'ai cases à cocher dans la 6ème colonne Par conséquent, vous devriez être mise en boucle des colonnes avec les indices 0 à 4.

ce:

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

devrait être le suivant:

0 À la place.
 for (j = 0; j < 5; j++) { 

à la place. Si vous avez remarqué que, en plus du texte unwanton apparaissant dans la 6ème colonne avec les cases à cocher, les fonctions de remplacement du texte ne fonctionnaient pas aussi bien pour les items de la 1ère colonne, cela explique/corrige aussi.

HTH.

p.s. Je suppose un peu, reformuler votre question pour le rendre un peu plus clair si ce n'était pas ce que vous vouliez dire ...


EDIT:

Juste pour préciser mon commentaire:

Le tutoriel Java Swing est un bon point de départ: comment obtenir boolean values to display in JTables as checkboxes. Le point d'intérêt pour vous est l'endroit où ils mettent en œuvre 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, il pourrait être quelque chose de plus explicite comme

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

Désolé pour la confusion, En fait, j'ai total de 7 colonnes.1st colonne est le numéro de série que j'ai fait cellEditable comme faux (pas besoin de modifier le numéro de série) .je veux trouver et remplacer de la 2ème colonne (ie j = 1) à la 6ème colonne (j = 5 ou j < 6) .Dans la colonne de soixante-dix j'ai des cases à cocher. Au lieu de cases à cocher je reçois son texte comme OUI/NON qui est équivalent à vrai/faux.I tracé et j'ai trouvé que les cases à cocher nt apparaissent bcoz de la mProcessQuestionTestIte mTable.setValueAt (rowstring, i, j); Que puis-je faire pour résoudre ceci – Bharath

+0

Considérons les deux: 1) Définissez les cases à cocher du modèle de table à utiliser dans une colonne particulière pour représenter les valeurs booléennes. 2) Vous appelez 'mProcessQuestionTestItemTable.setValueAt (rowstring, i, j)' puisque vous faites une boucle j de 1 à 5, la 7ème colonne (idx = 6) ne sera jamais définie. – bguiz