我想维护一个按钮列表,这些按钮以网格状布局放置在 GUI 中。
我一直在使用 javax.swing.JButton,并创建了我自己的子类,称为 ColoredButton。
我希望它们存储在静态数组列表中,这样我就可以对它们执行相同的功能(设置颜色)。这并不太难。
现在我正在尝试添加额外的功能,在初始化它们时将它们分成 3 种不同类型:角、边缘和中心按钮。问题是,每当我构造这 3 种类型中的一种时,我都想将其添加到 ColoredButton 静态数组列表以及其特定子类型的静态数组列表中。
我已经看到使用“this”作为参数将当前项目添加到列表中不起作用(返回一个空指针,因为“this”不完整)。
因此,我一直在使用工厂式结构。这是我的超类 ColoredButton 及其派生类之一。
public class ColoredButton extends JButton{
private static ArrayList <ColoredButton> all;
protected static void addToColored(ColoredButton B){
all.add(B);
}
public static ColoredButton newColoredButton(){
ColoredButton B = new ColoredButton();
ColoredButton.all.add(B);
return B;
}
public static void setAll(Color C){
for(ColoredButton B: ColoredButton.all)
B.setBackground(C);
}
}
public class EdgeButton extends ColoredButton {
private static ArrayList <EdgeButton> all;
public static EdgeButton newEdgeButton(){
EdgeButton B = new EdgeButton();
EdgeButton.all.add(B);
addToColored(B);
return B;
}
public static void setAll(Color C){
for(EdgeButton B: EdgeButton.all)
B.setBackground(C);
}
}
现在,当我尝试做这样的事情时:
EdgeButton B1 = EdgeButton.newEdgeButton();
我得到一个 NullPointerException。编译器说错误源于这一行:
EdgeButton.all.add(B);
那么我哪里错了?为什么我得到一个空 ptr 异常?
提前致谢!