2016-12-03 1 views
1

У меня есть JTable с некоторыми данными и пустые строки. Таблица построена с табличной моделью с 5 строками данных. Но я показываю и еще 6 пустых строк ниже 5 заполненных строк, перегружая getRowCount(), чтобы вернуть 11 в модель таблицы.Как отображать пустые строки в JTable и иметь возможность сортировать пустые строки, которые всегда появляются внизу

Однако, когда я делаю вид, пустые строки появятся в верхней части таблицы. Я хотел бы, чтобы пустые строки всегда отображались в нижней части таблицы.

Каков наилучший способ сделать это, не создавая вторую таблицу с пустыми строками, прикрепленную ниже той, которая сортируется?

Спасибо!

+0

Я нашел решение с помощью: http://stackoverflow.com/questions/2316563/how-can-i-sort-java-jtable-with-an-empty-row-and-force-the- empty-row-always-be-last Спасибо! – user1144251

ответ

0

Создайте TableRowSorter, который делает сортировку, в которой вы нуждаетесь, и зарегистрируйте ее как сортировщик, используя JTable.setRowSorter.

Это будет связано с созданием Comparator, который всегда имеет пустые строки, которые будут больше, чем непустые строки на основе некоторых или всех полей. Это должно принять во внимание SortOrder, если вы хотите, чтобы пустые строки отображались снизу, даже если вы отменили порядок сортировки. Вы можете получить заказ на RowSorter.getSortKeys.

0
The call to getSortKeys().get() must use 0 (i.e. the main sort key) and not column: 

boolean ascending = getSortKeys().get(0).getSortOrder() == SortOrder.ASCENDING; 
If the user clicks, for example, over the column number 12 or 7, you want the first sort key (there will be 3 at most, if the user clicked before over other columns, to perform multi column sort). This sort key will have two attributes: 

Sort Order (ASCENDING, DESCENDING, UNORDERED) 
getSortKeys().get(0).getSortOrder() 
Column Index (12 or 7, for example) 
getSortKeys().get(0).getColumn() 
Смежные вопросы