JTable с пользовательской JTableModel, и это ошибки - PullRequest
0 голосов
/ 29 октября 2011

Я написал приложение. с J2SE, который использует JDBC и JTable, чтобы показать некоторую информацию. Для извлечения данных в JTable я написал JTableModel, и когда я хочу создать новый JTable, я создаю новый экземпляр этого также для модели таблицы, когда я открываю форму, содержащую JTable, нет проблем случается. Но когда я открываю вторую форму одновременно, возникает ошибка:

Column count is out of range.

Как мне это решить?

Мой код для jTableModel такой:

public DBGrid(Connection conn, String Query) throws SQLException
{
    try
    {
        connection= conn;

        statement= connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                              ResultSet.CONCUR_READ_ONLY);

        Connected= true;
        SetQuery(Query);
    }
    catch(SQLException sqlException)
    {                 
        sqlException.printStackTrace();
        Connected= false;
    }
}

и код для создания наследования модели такой:

if(FormName.equals("Form1"))
    {
        if(CheckOpenForm("War_Group_Frame", "Groups"))
            return;

        DBGrid GridModel= new DBGrid(getDATABASE_URL(), getUserName(), getPassword(), 
                              "select *  from ware where Grp_ID= 0");
        War_Group_Frame W_F= new War_Group_Frame();

        W_F.WarList.setModel(GridModel);

        W_F.setVisible(true);
        Sender.add(W_F);
        BringFrameToFront(W_F);
    }
    else
    if(FormName.equals("Form2"))
    {
        if(CheckOpenForm("Ware_Unit", "Units"))
            return;

        Ware_Unit U_F= new Ware_Unit();                                                                                                                                                              
        U_F.UnitList.setModel(new DBGrid(connection, "select * from ware"));

        U_F.setVisible(true);
        Sender.add(U_F);
        BringFrameToFront(U_F);
    }

В этом методе класса jTableModel возникают ошибки:

public Class getColumnClass(int column) throws IllegalStateException
{
    if(!Connected)
        throw new IllegalStateException(java.util.ResourceBundle.getBundle("God_Lover/Resources").getString("DBNotConnectedError"));

    try
    {
        if(column< getColumnCount())
        {
            String ClassName = metaData.getColumnClassName(column + 1);
            return Class.forName(ClassName);
        }
    }
    catch(Exception exception)
    {
        exception.printStackTrace();
    }

    return Object.class;
}

1 Ответ

1 голос
/ 29 октября 2011

По предположению, count был увеличен, поскольку строки были добавлены в первый экземпляр, но он не был сброшен для второго экземпляра. Возможно, вы не заметили, потому что значение по умолчанию переменной экземпляра int равно 0.

...