Sar*_*abo 2 java generics user-interface javafx exception
我刚刚将这段代码添加到我的列表程序中,我得到了一个例外.我不确定发生了什么,它避免了我用它调试的努力.具体而言,异常发生在新列表的分配上.rankList是一个ListView<Rank>
rankList.getItems().addListener(new ListChangeListener<Rank>() {
@Override
public void onChanged(ListChangeListener.Change<? extends Rank> c) {
List<? extends Rank> ranks = c.getAddedSubList();
Collections.sort(ranks, (Rank t, Rank t1)
-> Long.compare(t.getNumericalRankApproximation(),
t1.getNumericalRankApproximation()));
setValue(ranks.get(ranks.size()).getNumericalRankApproximation());
increment();
}
});
Run Code Online (Sandbox Code Playgroud)
例外:
Caused by: java.lang.IllegalStateException: Invalid Change state: next() must be called before inspecting the Change.
Run Code Online (Sandbox Code Playgroud)
您必须迭代change传递给onChanged方法的内容.有关详细信息,请参阅文档,但有类似的内容
rankList.getItems().addListener(new ListChangeListener<Rank>() {
@Override
public void onChanged(ListChangeListener.Change<? extends Rank> c) {
while (c.next()) {
if (c.wasAdded()) {
List<? extends Rank> ranks = c.getAddedSubList();
Collections.sort(ranks, (Rank t, Rank t1)
-> Long.compare(t.getNumericalRankApproximation(),
t1.getNumericalRankApproximation()));
setValue(ranks.get(ranks.size()).getNumericalRankApproximation());
increment();
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1573 次 |
| 最近记录: |