gpt4 book ai didi

java - AbstractButton.setEnabled(true) 的 NullPointerException

转载 作者:行者123 更新时间:2023-11-29 07:35:12 26 4
gpt4 key购买 nike

我有 MenuButton,它扩展了 AbstractButton。当我在类中执行 setEnabled(true) 时,没有编译器错误,而是 NullPointerException 的运行时错误。 (请注意,完全相同的代码在扩展 JButton 时工作正常)。相关部分如下。

public class MenuItem extends AbstractButton{
private String type = "";
private String text = "";
private int level;
public MenuItem(String place, String name, int height) {
type = place;
text = name;
level = height;
setEnabled(true); //This is where the error occurs.
}
}

错误:

Exception in thread "main" java.lang.NullPointerException
at javax.swing.AbstractButton.setEnabled(Unknown Source)
at states.MenuItem.<init>(MenuItem.java:54)
at states.MainMenu.<init>(MainMenu.java:26)
at main.TheDarkSeaIslesPlatformer.main(TheDarkSeaIslesPlatformer.java:80)

这不是重复项,因为它已正确初始化。它在扩展 JButton 时也有效,因此这是 AbstractButton 的问题。

最佳答案

您需要定义一个按钮模型。这是AbstractButton中的setEnabled方法。

/**
* Enables (or disables) the button.
* @param b true to enable the button, otherwise false
*/
public void setEnabled(boolean b) {
if (!b && model.isRollover()) {
model.setRollover(false);
}
super.setEnabled(b);
model.setEnabled(b);
}

最简单的方法是在 setEnabled 之前在构造函数中设置它。

    setModel(new DefaultButtonModel());

关于java - AbstractButton.setEnabled(true) 的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36600792/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com