0

次のコードを取得しましたが、このエラーがあります (コードをできるだけ短くしようとしました。getColumnCount などの関数はコンストラクターのみを無視します)。

次のコードは、SQLite ステートメントによって Swing で JTable を作成するために使用されます。チェックボックスのブール値が必要です (はい、関数を編集/追加する必要があることはわかっていますが、コードをできるだけ小さくしたかったのです)。

コード:

package view;

import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.table.AbstractTableModel;

import controller.Database;

class Test extends AbstractTableModel {
        Database db = new Database();
        ResultSet rs;

        private String[] columnNames = {"Vorname", "Nachname", "E-Mail", "Anrede", "Jahrgang", "Ablösung", "Scheibe", "Waffe", "Gruppe", "Verpflegung", "Aktiv"};
        Object[][] data;

        public Test(){
            int result = 0;
            try {
                rs = db.stat.executeQuery("select count(*) as schuetzencount from schuetze;");
                result = Integer.parseInt(rs.getString("schuetzencount"));
                data = new String[result][11];
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            try {
                rs = db.stat.executeQuery("select * from schuetze as s join waffe as w on w.Waffe_ID = s.Waffe_ID join gruppe as g on g.Gruppe_ID = s.Gruppe_ID join anrede as a on a.Anrede_ID = s.Anrede_ID join verpflegung as v on v.Verpflegung_ID = s.Verpflegung_ID;");
                int counter = 0;
                while(rs.next()){

                    data[counter][1] = rs.getString("Schuetze_Nachname");
                    data[counter][0] = rs.getString("Schuetze_Vorname");
                    data[counter][4] = rs.getString("Schuetze_Jahrgang");
                    data[counter][2] = rs.getString("Schuetze_Email");
                    data[counter][5] = rs.getString("Schuetze_Abloesung");
                    data[counter][6] = rs.getString("Schuetze_Scheibe");
                    data[counter][7] = rs.getString("Waffe_Name");
                    data[counter][8] = rs.getString("Gruppe_Name");
                    data[counter][3] = rs.getString("Anrede_Name");
                    data[counter][9] = rs.getString("Verpflegung_Name");
                    data[counter][10] = true;
                    counter++;
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

        @Override
        public int getColumnCount() {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public int getRowCount() {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public Object getValueAt(int arg0, int arg1) {
            // TODO Auto-generated method stub
            return null;
        }

        public static void main(String[] args) {
            Test t = new Test();
        }
    }

エラー:

Exception in thread "main" java.lang.ArrayStoreException: java.lang.Boolean
at view.Test.<init>(Test.java:43)
at view.Test.main(Test.java:72)

私がするなら

Object[][] data = {{"Test", "Test","Test","Test","Test","Test","Test","Test","Test","Test",true}}

それは機能しますが、それは私が必要とするものではありません。Object[]次に、ブール値を入力してObject[] を追加しようとしましたdata[][]が、これも機能しませんでした。

誰かが私を助けてくれることを願っています、ありがとう。

あいさつ。

4

5 に答える 5

1

あなたの配列はdataTypeとして文字列を期待していますが、ブール値を入れようとしています。

data[counter][10] = true;

これに対する簡単な解決策"true"は、プリミティブブール型の代わりに文字列を使用することです(または文字列に解析します)

data[counter][10] = "true";
于 2013-07-30T11:51:50.620 に答える