簡體   English   中英

使用SwingX對JXTable進行排序

[英]Sorting JXTable with SwingX

我正在使用來自SwingX組件的JXTable 如果我使用setSortable(boolean flag)方法,那么它將啟用或禁用所有列的排序。

根據我的要求,我想禁用幾列的排序並啟用其他列的排序。

任何人都可以幫助實現此功能?


感謝您的回復。 你能幫我使用setSorterClass(String sorterClassName)來禁用一列的排序嗎? 你能給我任何代碼examplex嗎? 這對我很有幫助。

SwingX支持TableColumnExt級別的每列可排序屬性。 它的默認值為true,在列創建后禁用它

table.getColumnExt(myColumnIndex).setSortable(false)

或者在創建時,使用自定義ColumnFactory,如

ColumnFactory factory = new ColumnFactory() {

    @Override
    public void configureTableColumn(TableModel model, TableColumnExt column) {
        super.configureTableColumn(model, column);
        if (... your condition to disable sortable) {
            column.setSortable(false);
        } 
    }
} 
table.setColumnFactory(factory);
table.setModel(model);

JXTable將負責將列屬性同步到分類器,前提是它是SortController類型(這是默認值)

我認為,至少根據我在網上找到的內容,你可以通過為該列設置setSorterClass(null)來實現它。

正如我們可以在緩存的網站上看到那樣,當swinglabs教程頁面出現故障時,我打賭它與java.net服務上最近的混亂有關。 “JXTables默認啟用了列排序。您可以使用setSortingEnabled(boolean allowSort)禁用所有列排序。您還可以使用帶有空排序器類名稱的setSorterClass(String sorterClassName)禁用單個列的排序。”

就個人而言,我認為沒有必要阻止用戶對選定的表列進行排序。 無論如何,如果用戶想要對他/她應該能夠這樣做的列進行排序,最后我認為允許用戶更多更好,當然,當它涉及到他/她可以的詳細信息時在他/她的視野中控制。

我想你應該看一下TableRowSorter API ,看看JXTable是否支持它:

TableModel myModel = createMyTableModel();
JTable table = new JTable(myModel);
table.setRowSorter(new TableRowSorter(myModel));

TableRowSorter有一個API方法isSortable()

public boolean isSortable(int column)

如果指定的列是可排序的,則返回true; 否則,錯誤。

參數:column - 根據基礎模型檢查排序的列

返回:如果列是可排序的,則返回true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM