1
我正在開發一個項目,並取得了不錯的進展,直到遇到意外的異常。這是由於引入JMenuItem而引起的,有點令人驚訝,因爲我之前做過類似的事情。如果它不是JMenuItem(class4)的子類,我發現類(class2)工作正常。我還發現了一個解決方法(class3),但我仍然想知道,我做錯了什麼。我搜索了一個答案,但沒有拿出答案,可能是因爲搜索條件不好。任何任何想法?java JMenuItem Nullpointerexception(覆蓋swing類時的初始化錯誤)
import javax.swing.JMenuItem;
class class1 {
public static void main(String[] f) {
System.err.println(new class3(0));
System.err.println(new class3(1));
System.err.println(new class4(0));
new class2(1);
}
}
class class2 extends JMenuItem {
static String[] a;
int b;
{
a = new String[2];
a[0] = "c";
a[1] = "d";
}
public class2(int e) {
super();
b = e;
}
public String getText() {
return a[b];
}
public String toString() {
return class2.class + ": " + b + ", " + getText();
}
}
class class3 extends JMenuItem {
static String[] a;
int b;
{
a = new String[2];
a[0] = "c";
a[1] = "d";
}
public class3(int e) {
super();
b = e;
}
public String getText() {
if (b == 0) return "g";
return a[b];
}
public String toString() {
return class3.class + ": " + b + ", " + getText();
}
}
class class4 {
static String[] a;
int b;
{
a = new String[2];
a[0] = "c";
a[1] = "d";
}
public class4(int e) {
super();
b = e;
}
public String getText() {
return a[b];
}
public String toString() {
return class4.class + ": " + b + ", " + getText();
}
}
而且這種情況發生,當我執行的類:
$ javac class1.java
$ java -showversion class1
java version "1.8.0_73"
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)
class class3: 0, g
class class3: 1, d
class class4: 0, c
Exception in thread "main" java.lang.NullPointerException
at class2.getText(class1.java:29)
at javax.swing.AbstractButton.setModel(AbstractButton.java:1779)
at javax.swing.JMenuItem.setModel(JMenuItem.java:173)
at javax.swing.JMenuItem.<init>(JMenuItem.java:150)
at javax.swing.JMenuItem.<init>(JMenuItem.java:110)
at class2.<init>(class1.java:24)
at class1.main(class1.java:8)
由你到哪兒去發佈一個沒有絨毛,且充分說明您的問題以極其簡單的程序的方式,一個奈斯利問的問題。這是令人耳目一新的看到這個網站的新手。 –