Java JTable-对渲染值进行排序

Java JTable-对渲染值进行排序,java,swing,jtable,Java,Swing,Jtable,我使用自定义渲染器在JTable中渲染单元格值。当我使用自己的Comparator或TableRowSorter执行排序时,通常使用模型中的数据对值进行排序 是否有方法根据渲染的单元格值而不是原始值对列进行排序 是,使用表格行排序器,查看教程中的示例: 当我使用自己的比较器进行排序时 然后,自定义比较器需要知道渲染值是什么,并根据这些值进行排序。这意味着您需要将TableModel中的数据转换为比较器中的渲染值。SwingX渲染机制会自动执行此操作(WYSIWYS-您看到的是排序/搜索的内容)

我使用自定义渲染器在JTable中渲染单元格值。当我使用自己的Comparator或TableRowSorter执行排序时,通常使用模型中的数据对值进行排序


是否有方法根据渲染的单元格值而不是原始值对列进行排序

是,使用
表格行排序器
,查看教程中的示例:

当我使用自己的比较器进行排序时


然后,自定义比较器需要知道渲染值是什么,并根据这些值进行排序。这意味着您需要将TableModel中的数据转换为比较器中的渲染值。

SwingX渲染机制会自动执行此操作(WYSIWYS-您看到的是排序/搜索的内容)。您必须提供的唯一内容是StringValue:这是定义单元格内容表示的SwingX语言

JXTable table = new JXTable(myModel); // creates a RowSorter automatically
StringValue sv = new StringValue() {
     @Override
     public String getString(Object value) {
          if (value instanceof MyClass) {
              return // whatever string you want to create from the valuee's property
          } 
          return StringValues.TO_STRING.getString(value);
     }
};
table.setDefaultRenderer(MyClass.class, new DefaultTableRenderer(sv));