Я знаю, что, используя JTable
, столбец сортируется, когда мы нажимаем на заголовок столбца, но я хочу, чтобы при щелчке правой кнопкой мыши по имени столбца должно отображаться имя функции «sort». Любое предложение в этом?Как добавить функцию в jTable, сортирующую столбец?
ответ
Начните с добавления MouseListener
к столу. См. How to write mouse listeners
Вам нужно будет перевести точку щелчка на столбец, см. JTable#columnAtPoint
.
Затем вам необходимо обновить таблицу SortKey
. Проверьте Sorting and Filtering для примера
Если я вас правильно понял, вы хотите отсортировать по некоторому явному действию (срабатывает F.I. во всплывающем окне) вместо из нормальной левой кнопкой мыши.
Если это так, сложной частью является заставить ui-делегат ничего не делать. Есть два варианта:
- крюк в слушателем мыши по умолчанию, установленного на пользовательском интерфейсе делегата, как described in a recent QA
- Пусть щ делать свои вещи, но обмануть его реализации сортировщик, который не следует правилам (остерегайтесь: это так грязно, как первый подход)
ИСУ-Behaving сортировщик:
public class MyTableRowSorter extends TableRowSorter {
public MyTableRowSorter(TableModel model) {
super(model);
}
/**
* Implemented to do nothing to fool tableHeader internals.
*/
@Override
public void toggleSortOrder(int column) {
}
/**
* The method that really toggles, called from custom code.
*
* @param column
*/
public void realToggleSortOrder(int column) {
super.toggleSortOrder(column);
}
}
// Использование
final JTable table = new JXTable(new AncientSwingTeam());
table.setRowSorter(new MyTableRowSorter(table.getModel()));
Action toggle = new AbstractAction("toggleSort") {
@Override
public void actionPerformed(ActionEvent e) {
JXTableHeader header = SwingXUtilities.getAncestor(
JXTableHeader.class, (Component) e.getSource());
Point trigger = header.getPopupTriggerLocation();
int column = trigger != null ? header.columnAtPoint(trigger) : -1;
if (column < 0) return;
int modelColumn = header.getTable().convertColumnIndexToModel(column);
((MyTableRowSorter) header.getTable().getRowSorter())
.realToggleSortOrder(modelColumn);
}
};
JPopupMenu menu = new JPopupMenu();
menu.add(toggle);
table.getTableHeader().setComponentPopupMenu(menu);
Да, не удержалось бросать в некотором SwingX апи, ленивый меня :-) С простыми Качелями, вам придется написать несколько строк больше, но основы те же: установить tricksy сортировать и использовать свой обычай сортировать сортировку до действительно сортировать все необходимое, fi в mouseListener.
- 1. Как добавить кнопку или ссылку, сортирующую данные?
- 2. Как добавить столбец со значениями в JTable?
- 3. NullPointerException при попытке добавить столбец в JTable
- 4. Как суммировать столбец jtable
- 5. Как добавить уникальные JComboBoxes в столбец в JTable (Java)
- 6. Скрыть столбец в JTable
- 7. Скрыть столбец в JTable
- 8. Как добавить в JTable?
- 9. Как добавить столбец с заголовком и данными в JTable
- 10. как добавить столбец в jTable и заполнить на лету
- 11. Добавление значения в столбец Jtable
- 12. Как добавить функцию экспорта из JTable в Excel или PDF?
- 13. добавить строку и столбец в jTable в одном цикле
- 14. Исключить столбец сортировки в JTable
- 15. Чтобы добавить столбец в jtable, изменяя его ширину
- 16. Как реализовать функцию, сортирующую список пользователей по подсчету последователей в Laravel?
- 17. Добавить текст и значок (с помощью MouseListener) в столбец JTable
- 18. Удалить столбец из JTable
- 19. jTable ввод данных в столбец
- 20. Как добавить JTable в JPanel
- 21. Как добавить строку в JTable?
- 22. Как добавить JCheckBox в JTable?
- 23. Как добавить запись в jTable?
- 24. Как добавить JLabel в JTable?
- 25. Как добавить JCheckBox в JTable
- 26. Как добавить JButton в JTable
- 27. Как добавить JTable в JSplitPane?
- 28. Как добавить данные в JTable?
- 29. Как уменьшить столбец JTable в Netbeans?
- 30. Как добавить пустую строку в JTable?
Почему для вас затрудняются? – kleopatra
@ kleopatra на самом деле это то, что требует клиент, потому что он не хочет, чтобы столбец случайно сортировался при щелчке заголовка столбца. :) – John11