JTable с меньшим количеством записей в строке, чем отображаемые и проблемы с сортировкой - PullRequest
4 голосов
/ 26 мая 2011

Я использую объект JTable, чтобы показать некоторые данные, хранящиеся в базе данных.Теперь я хотел бы получить следующий результат:

Отображаемая таблица JTable должна содержать не менее n (пусть будет 10) строк, даже если в моей таблице базы данных меньше записей.Пустая строка всегда должна отображаться в конце таблицы.

Так как теперь я делаю следующее:

Я реализовал свою собственную модель таблиц, расширяющую AbstractTableModel.И в реализованном методе getRowCount я сделал:

public int getRowCount() {
       if (myRowCount < 10 )

           return 10;
       else 
           return myRowCount;
}

Вопросы:

  1. Этот код работает нормально, но мне было интересно, если это правильный подход для достижения этого результата.Это хорошее решение?
  2. В дополнение к этому, если я попытаюсь отсортировать строку, я получил нежелательный вывод.На самом деле пустые строки учитываются при сортировке, что приводит к тому, что (например, упорядочение столбца типа int в порядке убывания) пустые строки отображаются в начале таблицы.Должен ли я реализовать свой собственный TableRowSorter, чтобы избежать такого поведения, или это возможно по умолчанию (table.setAutoCreateRowSorter (true))?

заранее спасибо

EDIT:я читаю @mKorbel ссылки с @kleopatra @camickr сообщений .Это мне очень помогает.Но я действительно хочу сделать это максимально чистым способом, потому что этот класс будет очень важен в моем приложении.Является ли решение, предложенное в предыдущем связанном посте, достаточно чистым?Или у него есть некоторые недостатки, которых я сейчас не вижу?

Я получил награду.Пожалуйста, дайте мне хорошие советы!спасибо ..

Марко

1 Ответ

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

Если вы хотите иметь возможность редактировать эти пустые строки, то, я думаю, единственный способ - переопределить DefaultRowSorter s getComparator(column) метод.

РЕДАКТИРОВАТЬ Я думал, вы могли былибо переопределите getComparator (), либо установите Comparator для каждого столбца, чтобы он проверял, является ли одно из значений нулевым и т. д. Я попытался, это не сработало, потому что в DefaultRowSorter есть проверки на ноль, и есть другие проблемы.

К сожалению, большинство вещей в DefaultRowSorter являются частными, поэтому для настройки мало места.Если вам нужно такое поведение, вам нужно написать собственную реализацию RowSorter.Я бы порекомендовал вам использовать этот подход, только если эта функциональность абсолютно необходима для вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...