我在JList中进行自定义渲染。我的自定义ListCellRenderer使用一个静态字符串,以便它可以针对该变量的先前出现来测试特定变量的值。
private static String lastUsername = "";
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
User user = (User)value;
if (lastUsername == user.getUsername()) {
// Do something
} else {
// Do something else
lastUsername = user.getUsername();
}
现在,这在程序第一次加载时工作正常但是如果我然后滚动列表会导致问题,因为lastUsername变量仍然设置为它遇到的最后一个用户名,实际上它应该是一个空字符串。基本上,在渲染所有单元格之前或之后,需要将lastUsername重置为空字符串。有没有人知道我是否可以覆盖JList post / pre AllCellsRendered事件/钩子来实现这个目标?
答案 0 :(得分:1)
将String对象与==而不是equals进行比较的常见错误。请改为if (lastUsername.equals( user.getUsername() ))
。