2016-04-13 22 views
1

AbstractButton'u genişleten MenuButton var. Sınıf içinde setEnabled(true) yaptığımda, derleyici hatası yok, ancak bir çalışma zamanı hatası NullPointerException. (JButton'u genişletirken aynı kodun iyi çalıştığını unutmayın). İlgili bölümler aşağıdadır. NullPointerException for AbstractButton.setEnabled (true)

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. 
    } 
} 

Ve hatası: Doğru başlatıldı çünkü

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) 

Bu bir kopya değil. Ayrıca JButton'u genişletdiğinde çalışır, bu yüzden AbstractButton ile ilgili bir sorundur.

+0

@StefanBeike https://docs.oracle.com/javase/7/docs/api/javax/swing/AbstractButton.html#setEnabled(boolean) –

cevap

3

imkan vermelidir. Bu, AbstractButton'daki setEnabled yöntemidir. Bunu yapmak için

/** 
* 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); 
} 

kolay yolu setEnabled öncesinde Yapıcınızda bu ayarlamaktır.

setModel(new DefaultButtonModel()); 
+0

Bu işe yaradı, bir ton teşekkürler! –

2

Bunu yapıcıda yapamazsınız. Sen bunu ihtiyacınız Menuıtem başlatmak ve bir düğme modeli tanımlamak gerekir o

MenuItem menuItem = new MenuItem(); 
menuItem.setEnabled(true); 
+0

Hayır, bu işe yaramadı. Farklı bir yerde aynı hata. –

+0

Nesneyi doğru şekilde başlattın mı? Olarak, parametreleri vermek? – Ricardo

+0

Evet. Söylediğim gibi, JButton olarak iyi çalıştı. –