java - 重写 JLabel 中的 setText() 方法

标签 java swing nullpointerexception jlabel

我用 Java 实现了以下代码。

public class FadeLabel extends javax.swing.JLabel {

    private Timer onTimer;

    public FadeLabel() {
        init();
    }

    private void init(){
        setHorizontalAlignment(CENTER);
        setVerticalAlignment(CENTER);
        onTimer = new Timer(100, (ActionEvent e) -> {
            // animation code
        });
    }

    @Override
    public void setText(String text) {
        onTimer.start();
        super.setText(text);
    }
}

当我创建此类的对象时,它在 setText() 方法中给出了一个 NullPointerExceptiononTimer.start().

我想知道为什么会出现这个异常..?

ps: 我知道什么是NullPointerException。我想知道这里是怎么生成的..

这就是我实例化的方式。

notificationLabel = new FadeLabel();

最佳答案

查看 source code对于 JLabel

public JLabel() {
    this("", null, LEADING);
}

public JLabel(String text, Icon icon, int horizontalAlignment) {
    setText(text);
    setIcon(icon);
    setHorizontalAlignment(horizontalAlignment);
    updateUI();
    setAlignmentX(LEFT_ALIGNMENT);
}

因此我们可以看到无参数构造函数调用了另一个,然后调用了 setText。但是此时您的 init 方法还没有运行,所以 onTimer 仍然是 NULL

关于java - 重写 JLabel 中的 setText() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46704244/

相关文章:

java - 特定日期和时间的倒计时器

OpenJDK 上的字体与 Sun JDK 1.6 [Linux 平台]

java - 如何尝试使用 jtextfield 捕获异常?

java - HIbernate 空指针 bindManytoManyInverseFk

java - 使用其他网络的 ip 时,方法 getHardwareAddress() 给出 NullPointerException

java - 从 Facebook 的 JSON 响应中获取奇怪的字符

java - 如何确定 JTextfield 的整数值?

java - 当我在 apache poi 库中使用 Calibri 字体时,可运行 jar 中的列宽无法正确显示

java - 什么是 NullPointerException,我该如何解决?

java - 将两个椭圆拟合到 body 轮廓