java - JList 渲染前/渲染后 Hook ?

标签 java swing

我正在 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 事件/钩子(Hook)我可以重写来实现此目的?

最佳答案

使用 == 而不是 equals 来比较 String 对象的常见错误。尝试使用 if (lastUsername.equals( user.getUsername() )) 代替。

关于java - JList 渲染前/渲染后 Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9835961/

相关文章:

java - Oracle 认证专家、Java SE 程序员

java - 如何识别线程的启动者

java - 垃圾收集(本地引用)

java - 一点一点画曲线

java - 将字体和颜色设置为一个 JLabel 中包含的字符串的不同部分

java - 区分 JOptionPane.showInputDialog() 中的无输入(空字符串)和取消按钮?

java - Recyclerview + Listadapter 中的项目不会在更新时重绘

java - 运行 android native 代码导致 java.lang.UnsatisfiedLinkError

java - 更改选项卡式面板的背景颜色

Java:键绑定(bind)被其他组件消耗