我知道,通過使用JTable
,當我們點擊列標題時列被排序,但我想要的是,當我右鍵單擊列名稱時,應該顯示函數名稱「sort」。有什麼建議嗎?如何在jTable中添加一個對列進行排序的函數?
0
A
回答
3
首先在表格中添加MouseListener
。請參閱How to write mouse listeners
您需要將點擊點轉換爲列,請參閱JTable#columnAtPoint
。
然後您需要更新表格的SortKey
。退房Sorting and Filtering爲
2
如果我理解正確的話,你想通過一些明確的行動(在彈出觸發f.i.)排序而不是通過正常的左鍵的一個例子。
如果是這樣,棘手的部分是強制ui委託不做任何事情。有兩個選項:
- 鉤到由UI委託安裝在默認的鼠標偵聽器,如described in a recent QA
- 讓UI做的東西,而是通過分類器實現欺騙它不遵守規則( 提防:這是因爲第一種方法爲髒)
誤運行得選機:
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 API扔,我懶:-)帶滑動的Swing,你必須寫一些線條更,但基本是相同的:安裝tricksy分揀機並使用其自定義切換排序真的排序whereever needed,fi在mouseListener中。
相關問題
- 1. 如何根據在jtable中動態添加的列對行進行排序?
- 2. 對JTable中的數字進行排序
- 3. 如何在輸入JFrame時對JTable列進行排序?
- 4. 如何使用Bubble排序對我的JTable進行排序?
- 5. 如何加快使用OracleCachedRowSet對模型進行排序JTable?
- 6. 如何在android中一次對2個列表進行排序
- 7. 如何在MATLAB中對一列進行二維數組排序?
- 8. 在Java 1.5中對JTable進行排序排序
- 9. 如何按日期添加對列進行排序?
- 10. 如何按第一個數字對列表進行排序?
- 11. 如何使用另一個陣列對數組進行排序
- 12. 如何在jquery中對錶中的單個列進行排序
- 13. 如何在groovy中對排序列表進行排序
- 14. 如何使用ArrayAdapter對Android中添加的HashMap進行排序
- 15. 如何通過自定義函數對列表進行排序?
- 16. 如何根據另一個列表對列表進行排序?
- 17. 如何在加載時按降序對列進行排序?
- 18. 如何按數據庫中的列對列進行排序?
- 19. 排序多行的JTable列
- 20. Rails按列名在另一個表中對列進行排序
- 21. 如何根據對象屬性對JTable中的行進行排序?
- 22. 如何在javascript中對這個對象數組進行排序?
- 23. 如何以最短的方式對JTable進行排序?
- 24. 如何對多個查詢中的多個列進行排序?
- 25. 在mapreduce中對map函數中的鍵值對進行排序
- 26. 對JTable進行排序代表時間的2列
- 27. 如何使用數字排序對varchar列進行排序
- 28. TypeScript對一個數組進行排序
- 29. 如何通過在外部提供列索引來對JTable進行排序
- 30. 構建一個JavaScript函數的對象屬性進行排序
爲什麼讓你的用戶很難? – kleopatra
@kleopatra實際上這是客戶端所要求的,因爲他不希望列單擊列標題時不小心得到排序。 :) – John11