单击按钮时,我希望选择的行倒置(应该选择未选择的行,并且应选择排行的行)。

Jtable中是否有建筑方法可以这样做?

有帮助吗?

解决方案

JTable似乎没有内置的方式。因此,我使用以下代码实现了它。 (希望这对面临类似问题的人有帮助。)

int[] selectedIndexs = jtable.getSelectedRows();
jtable.selectAll();

for (int i = 0; i < jtable.getRowCount(); i++) {
    for (int selectedIndex : selectedIndexs) {
        if (selectedIndex == i) {
            jtable.removeRowSelectionInterval(i, i);
            break;
        }
    }
}

其他提示

简化Sudar的解决方案:

int[] selectedIndices = table.getSelectedRows();
table.selectAll();
for (int prevSel : selectedIndices) {
    table.removeRowSelectionInterval(prevSel, prevSel);
}

JTable没有该功能

不,您将必须实施一个切割 ListSelectionListener

上面的完善是使用选择模型对象而不是表对象更新选择。当您通过表更新选择时,每个更新都会触发选择更改事件,并且只需几秒钟即可使用几百行更新表。

拥有数百行的桌子的最快方法是

/**
 * Invert selection in a JTable.
 *
 * @param table
 */
public static void invertSelection(JTable table) {
    ListSelectionModel mdl = table.getSelectionModel();
    int[] selected = table.getSelectedRows();
    mdl.setValueIsAdjusting(true);
    mdl.setSelectionInterval(0, table.getRowCount() - 1);
    for (int i : selected) {
        mdl.removeSelectionInterval(i, i);
    }
    mdl.setValueIsAdjusting(false);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top