swing jtable отображает количество строк по умолчанию

Я занимаюсь разработкой настольного приложения с использованием Java Swing и NetBeans. Оно использует jtable с пользовательской табличной моделью для визуализации данных. Я хочу отобразить минимальное количество строк в таблице, чтобы даже когда фактическое количество отображаемых строк было меньше минимального значения, в таблице должны отображаться дополнительные фиктивные строки, чтобы составить минимальное количество.

ниже приведены ниппеты кода для модели таблицы

public class MyTableModel extends AbstractTableModel {

    private List<List<Object>> dataList = new ArrayList<>();
     private String[] header = { "ID","SUBJECT","LETTTER FROM","LETTER DATE","DATE RECEIED",
                                  "REMARKS","DATE DISPATCHED","DESTINATION OFFICE"};


    public List<List<Object>> getDataList() {
        return dataList;
    }

    public void setDataList(List<List<Object>> dataList) {       
        this.dataList = dataList;
        fireTableDataChanged();       
        fireTableStructureChanged();        
    }

    public void setHeader(String[] header) {
        this.header = header;
    }

    public String[] getHeader() {
        return header;
    }

    @Override
    public int getRowCount() {
        return dataList.size();
    }

    @Override
    public int getColumnCount() {
        return header.length;
    }

    @Override
   public String getColumnName(int col) {
    return header[col];
   }

    @Override
    public Object getValueAt(int row, int col) { 
    return dataList.get(row).get(col);
    }

    @Override
     public Class<?> getColumnClass(int column)
        {
            for (int row = 0; row < getRowCount(); row++)
            {   
                Object o = getValueAt(row, column);

                if (o != null)
                {
                    return o.getClass();
                }              
            }
            return Object.class;
        }
    }

любые предложения доступны.

1 ответ

Решение

Во-первых, вам нужно вернуть либо minRowCount или количество строк, которое всегда больше...

@Override
public int getRowCount() {
    return Math.max(dataList.size(), minRowCount);
}

Затем вам нужно проверить, находится ли запрос значения в пределах диапазона списка данных.

@Override
public Object getValueAt(int row, int col) { 
    Object value = null;
    if (row < dataList.size()) {
        value = dataList.get(row).get(col);
    }
    return value;
}

Если вы хотите, чтобы таблица была редактируемой, вам также необходимо настроить isCellEditable а также setValueAt методы

Другие вопросы по тегам