0

6 列の Jtable があり、6 列目にチェック ボックスがあります。setValueAt() および getValueAt() メソッドを使用してテキストを JTable に出力しています。 jtable 内のすべてのテキストを検索、置換、および置換します。特定のセルは、テキストを検索するためにフォーカスされます。特定のセルがフォーカスされ、テキストを指定されたテキストに置き換えます。

私の問題は、テキストを特定のテキストに置き換えるときに、特定のセルにフォーカスし、setValueAt() を使用して置き換えることです。しかし、6 列目のチェック ボックスが乱れ、テキストが YES または NO(選択されたチェックボックスはYESを使用し、選択解除されたチェックボックスは文字列を使用しませんでした)。これが私のサンプルコードです:

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


                }

              }`
4

1 に答える 1

1

6列目にチェックボックスがある6列のJtableがあるため、インデックス0から4の列からループする必要があります。

これ:

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

これである必要があります:

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

代わりは。チェックボックスを使用して 6 列目に不要なテキストが表示されることに加えて、テキストの置換機能が 1 列目のアイテムに対しても機能していないことに気付いた場合は、これも説明/修正されます。

HTH。

ps私はかなりのことを想定しています。これがあなたの意図したものではない場合、質問を少し明確にするために言い直してください...


編集:

私のコメントを詳しく説明すると、次のようになります。

Java Swing チュートリアルは、開始するのに適した場所です:ブール値を取得して JTables にチェックボックスとして表示する方法について説明しています。興味深い点は、次のようにしてテーブルのカスタム TableModel を実装する場所です。

class MyTableModel extends AbstractTableModel {

    ...

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

    ...
}

あなたの場合、それは次のようなより明示的なものになる可能性があります

    public Class getColumnClass(int c) {
        if (c == 7)
        {
            return Boolean.TYPE;
        }
        return String.class;
    }
于 2009-12-02T10:17:04.943 に答える