Я работал над этим кодом пару дней. Моя процедура в базе данных работает нормально, но она не заполняет таблицу. Я перебираю код снова и снова, но не могу найти, что не так ... Ошибка, которую я получаю: JavaNullPointerException и строка, включающая это фрагмент кода, который возвращает notes.length
. Вот кусок моего кода:
private Object[][] notes = null;
setUpStatusColumn(noteTable, noteTable.getColumnModel().getColumn(2));
protected JTable createTable(GradesModel gradesModel) {
return new JTable(gradesModel);
}
public void setUpStatusColumn(JTable table, TableColumn statusColumn) {
statusCombo = new JComboBox();
statusCombo.addItem("OTOCLOSED");
statusCombo.addItem("INPROGRESS");
statusCombo.addItem("OPEN");
statusCombo.addItem("CLOSED");
statusColumn.setCellEditor(new DefaultCellEditor(statusCombo));
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setToolTipText("Click to select Note Status");
statusColumn.setCellRenderer(renderer);
}
private class GradesModel extends AbstractTableModel {
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
notes[rowIndex][columnIndex] = aValue;
fireTableCellUpdated(rowIndex, columnIndex);
}
public void addTableModelListener(TableModelListener l) {
}
public void removeTableModelListener(TableModelListener l) {
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
if (columnIndex == 0 || columnIndex == 1 || columnIndex == 4 || columnIndex == 5)
return false;
else
return true;
}
public Class<?> getColumnClass(int col) {
switch (col) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
return String.class;
}
throw new AssertionError("invalid column");
}
public int getRowCount() {
return notes.length;
}
public int getColumnCount() {
return 6;
}
public String getColumnName(int col) {
switch (col) {
case 0:
return "ETT Date";
case 1:
return "Control Name";
case 2:
return "Note Status Type";
case 3:
return "Note Log Desc";
case 4:
return "Note Log Date Time";
case 5:
return "Update/Insert";
}
throw new AssertionError("invalid column");
}
public Object getValueAt(int row, int col) {
for (int i = 0; i < 6; i++) {
if (col == i)
return notes[row][col];
}
throw new AssertionError("invalid column");
}
}
public void getTableData() throws Exception {
Vector<AlarmLog> alarmLog = null;
alarmLog = RepositoryHandler.getGlobalRepository().getAlarmLog(
alarmId);
notes = new Object[alarmLog.size() ][5];
java.util.Iterator<AlarmLog> ite = alarmLog.iterator();
int i = 0;
GradesModel myModel=(GradesModel)noteTable.getModel();
while(ite.hasNext()){
AlarmLog aLog = ite.next();
myModel.setValueAt(aLog.getEttDate(), i, 0);
myModel.setValueAt(aLog.getControlName(), i, 1);
myModel.setValueAt(aLog.getAlarmStatusType(), i, 2);
myModel.setValueAt(aLog.getAlarmLogDesc(), i, 3);
myModel.setValueAt(aLog.getAlarmLogDateTime(), i, 4);
myModel.setValueAt(1, i, 5);
i++;
}
// fill table code
noteTable.repaint();
//setModel
}
public void getDataFromTable() {
int columnCount = noteTable.getModel().getColumnCount();
int rowCount = noteTable.getModel().getRowCount();
Object[][] objArray = new Object[rowCount][columnCount];
for (int i = 0; i < rowCount; i++) {
for (int j = 0; j < columnCount; j++) {
objArray[i][j] = noteTable.getModel().getValueAt(i, j);
}
}
}