Обновление определенных записей в jTable, созданном netbeans - PullRequest
1 голос
/ 29 мая 2011

Ниже приведен код для моей jTable, созданной GUI Builder, включенный в NetBeans. Я установил один из столбцов в редактируемый (столбец срока выполнения для приложения библиотеки) Да, пользователь может редактировать этот столбец и вводить данные, но после закрытия программы таблица не сохраняет то, что пользователь вменял в эти столбцы! Я много чего перепробовал, но ничего не получается! любая помощь будет оценена!

    adultFictionTable = new javax.swing.JTable(); 
    adultFictionTable.setAutoCreateRowSorter(true); 
    adultFictionTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE); 
    adultFictionTable.setModel(new javax.swing.table.DefaultTableModel( 
    new Object [][] { 
        {"Book 1", "8787987897987", "3/1/11"}, 
        {"The Rows And", "2131223", "2/1/11"} 
    }, 
    new String [] { 
        "Book Name", "ISBN", "Due Date" 
    } 
    ) { 
      Class[] types = new Class [] { 
        java.lang.String.class, java.lang.String.class, java.lang.String.class 
    }; 
    boolean[] canEdit = new boolean [] { 
        false, false, true 
    }; 

    public Class getColumnClass(int columnIndex) { 
        return types [columnIndex]; 
    } 

    public boolean isCellEditable(int rowIndex, int columnIndex) { 
        return canEdit [columnIndex]; 
    } 
    }); 

    adultFictionTable.setName("adultFictionTable"); // NOI18N 



    adultFictionTable.addKeyListener(new java.awt.event.KeyAdapter() { 
    public void keyPressed(java.awt.event.KeyEvent evt) { 
    adultFictionTableKeyPressed(evt); 
    } 
    }); 

    jScrollPane1.setViewportView(adultFictionTable); 
      adultFictionTable.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("adultFictionTable.columnModel.title0")); // NOI18N
adultFictionTable.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("adultFictionTable.columnModel.title1")); // NOI18N
adultFictionTable.getColumnModel().getColumn(2).setHeaderValue(resourceMap.getString("adultFictionTable.columnModel.title2")); // NOI18N

1 Ответ

3 голосов
/ 29 мая 2011

Ответ прост. Каждый раз, когда ваше приложение запускается, ваш код заполняет таблицу тем же объектом DefaultTableModel, который содержит значения по умолчанию, которые вы установили в NetBeans.

Если вы хотите, чтобы приложение запомнило введенные значения, вам нужно извлечь их из модели и сохранить их в файле (например). Затем, когда приложение снова запустится, вы должны прочитать эти значения из файла и создать NEW DefaultTableModel и поместить в него значения. Тогда вы должны явно установить эту модель в вашей таблице. Он заменит существующий.

EDIT

Вот пример, показывающий, как получить модель таблицы из 3 столбцов с 16 строками, чтобы очистить ее содержимое, установив в ней пустые значения:

// Retrieving the model
TableModel model = jTableTranslation.getModel();

// Clearing the model
for (int i=0;i<16;i++) {
    for (int j=0;j<3;j++) {
        model.setValueAt("", i, j);
    }
}

В табличных моделях также есть метод .getValueAt(...) для извлечения контента.

...