自定义子项为TreeTableView排序

时间:2016-02-26 15:31:37

标签: javafx javafx-8

我有一个TreeTableView,其中Model被定义为:

class Model {

    private final Integer _id;
    private final String _name;
    private final Integer _count;

    public Model(int id, String name, int count) {
        _id = id;
        name = _name;
        count = _count;
    }

    public Integer getId() { return _id; }
    public String getName() { return _name; }
    public Integer getCount() { return _count; }

}

TreeTableView 中,我按名称对行进行分组,如果其子元素的相应字段不相同,则将空值放在标题的字段中。这是一个明确的例子:



td {
  width: 50px;
  text-align: center;
}

<table border="1">
  <tr>
    <td>▼</td><td>-</td><td>Apple</td><td>-</td>
  </tr>
  <tr>
    <td></td><td>100</td><td>Apple</td><td>7</td>
  </tr>
  <tr>
    <td></td><td>101</td><td>Apple</td><td>2</td>
  </tr>
  <tr>
    <td></td><td>105</td><td>Apple</td><td>3</td>
  </tr>
    <tr>
    <td>▼</td><td>-</td><td>Apple</td><td>2</td>
  </tr>
  <tr>
    <td></td><td>151</td><td>Apple</td><td>2</td>
  </tr>
  <tr>
    <td></td><td>160</td><td>Apple</td><td>2</td>
  </tr>
  <tr>
    <td></td><td>163</td><td>Apple</td><td>2</td>
  </tr>
</table>
&#13;
&#13;
&#13;

在第一个展开的行中,第三列是&#34; - &#34; (因为它的子节点对于该列具有不同的值),而第二个扩展行具有&#34; 2&#34;因为它的子列具有该列的相同值。

&#34; - &#34;在Model类中表示为 null (这就是为什么它有整数而不是 int )。

问题在于:当按升序对第3列进行排序时,第一行保持优先,因为它包含的null被认为小于第二个展开行的值 2 ...

我想要的是能够手动选择父节点的最小值和最大值,因此我可以选择其子节点的最小值和最大值。 TreeTableColumn有一个set比较方法,但是那个比较Models,而不是TreeItem。

0 个答案:

没有答案