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
методы