小编Pan*_*nky的帖子

JTable可点击列排序:排序对单元格内容进行排序,但不更新单元格格式?

我有一个可排序的JTable设置来使用自定义扩展AbstractTableModel.但是,这个表的某些行为是我的预期,我希望得到一些关于如何解决这个问题的建议.

我将JTable设置为可排序使用:

thisJTable.setAutoCreateRowSorter(true);
Run Code Online (Sandbox Code Playgroud)

这允许我按预期单击列标题对表进行排序.

但是,我发现当我通过单击列标题对表进行排序时,我的行的格式(背景和前景色)也没有排序.

我根据它们包含的值设置了这些行的颜色编码.当我按列标题排序时,给定行NUMBER的格式保持不变(尽管之前在该行中的内容已移动).

通过覆盖prepareRendererJTable 的默认调用来设置行的颜色:

thisTable = new JTable(thisModel){

    //Set up custom rendering - Sets background color of row to correct value
    public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
        Component c = super.prepareRenderer(renderer, row, column);
        CustTableModel thisModel = (CustTableModel) getModel();
        c.setBackground(thisModel.getRowBackgroundColor(row));
        c.setForeground(thisModel.getRowForeColor(row));
        return c;
    }
};
Run Code Online (Sandbox Code Playgroud)

有没有更好/不同的方法来解决这个问题?

我是否应该使用不同的方法来进行渲染,这种方法可以在排序中更新JTable的渲染?

或者我是否想要编写自己的排序方法?

解决方案(谢谢mKorbel!)

我以为我会发布我的解决方案,因为我不得不玩这个,因为我不确定新索引是否也会传递给prepareRenderer.

 thisTable = new JTable(thisModel){

    //Set up custom rendering - Sets background color of row to correct value
    public …
Run Code Online (Sandbox Code Playgroud)

java swing jtable abstracttablemodel

19
推荐指数
2
解决办法
3万
查看次数

标签 统计

abstracttablemodel ×1

java ×1

jtable ×1

swing ×1