当前位置: 首页 > 知识库问答 >
问题:

如何根据在JTable中动态添加的列对行进行排序?

易阳云
2023-03-14

已经存在一个jtable,我需要动态添加一列,然后为该列设置表格单元格呈现器,单元格呈现器是带有图标的jlabel。我已经做完了。

我的问题是:现在我需要根据表格单元格呈现器中使用的不同图标对列进行排序,那么如何做到这一点呢?谢谢你。

    JTable table;// the table is already existed, I cannot change it

    TableColumn column = new TableColumn();

    column.setHeaderValue("Icon");
    column.setCellRenderer(new IconCellRenderer());

    table.addColumn(column);


public class IconCellRenderer extends DefaultTableCellRenderer
{
  private static final long serialVersionUID = 1L;

  public IconCellRenderer()
  {
    super();
  }

  @Override
  public Component getTableCellRendererComponent(JTable pTable, Object pValue,
      boolean pIsSelected, boolean pHasFocus, int pRow, int pColumn)
  {
    JLabel label = new JLabel();


    if (checkCondition(..))
    {
      label.setIcon(iconOne);
    } 
    else
    {
      label.setIcon(iconTwo));
    }

    label.setHorizontalAlignment(SwingConstants.CENTER);

    return label;
  }

}

共有1个答案

子车海
2023-03-14

为此,您可以使用TableRowsorter,并将Comparator设置为所需的列。在该比较器中,您可以比较单元格的值并对它们进行排序:

TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
sorter.setComparator(0, new Comparator<Object>() {

    @Override
    public int compare(Object o1, Object o2) {
        return 0;
    }
});
table.setRowSorter(sorter);

table是您的jtablemodel是您的表的模型。

JTable中阅读有关排序的更多信息。

 类似资料:
  • 问题内容: 您知道如何将新行添加到吗? 问题答案: 的后面处理表后面的所有数据。为了在表格中添加和删除行,您需要使用 要使用此模型创建表: 要添加一行: 您也可以使用此方法删除行。

  • 编辑:对于同样的问题,我尝试编写一个比较器。但它不起作用

  • 问题内容: 我有一个,我需要能够对列进行重新排序。但是,我希望第一列不能重新排序。我使用以下命令来启用重新排序: 现在可以对列进行重新排序,包括不需要的第一列。有什么方法可以锁定第一列? 我已经看到一些使用两个表的解决方案,其中第一列在单独的表中,但是也许有更好/更简单的方法。 问题答案: 我认为您需要重写中的方法。在类有一个方法,你应该能够看到,以确定它是否是你的固定列,然后你应该能够取消事件。

  • 问题内容: 我试图根据键中的日期对此HashMap进行排序 我的哈希图: 问题答案: 使用代替。正如已经实现的那样,它将在插入时自动排序。 或者,如果您有一个现有的并且想要基于它创建一个,则将其传递给构造函数: 也可以看看: Java教程-地图实现 Java教程-对象排序

  • 问题内容: 我有一个空的JTable,绝对没有。我需要以某种方式动态生成其表列。我尝试使用的代码的简化版本: 但是我得到了 线程“ AWT-EventQueue-0”中的异常java.lang.ArrayIndexOutOfBoundsException:0> = 0 我究竟做错了什么? 如果有帮助,这是完整的堆栈跟踪: 问题答案: 我认为您需要将列添加到表的数据模型及其列模型中。当数据模型更改时

  • 问题内容: 我想在添加新元素时对CellTable中的行进行排序。 要标记UI,请使用UIBinder: 在小部件中,我创建了一个表格和分页: 然后我安装了一个选择模型: 并添加了几列: 接下来,我创建: 如果我使用这种方法,那么新行将添加到表的末尾。 添加时,我需要自动对行进行排序。 我该怎么做? 问题答案: 在创建提供程序之后立即创建排序处理程序: 然后为每个要作为排序依据的列设置一个比较器,