这是我第一次尝试使用GUI,我正在尝试设置JButton的Icon。无论我如何编码,我都会获得NPE。我已标记出NPE所在的行。我已成功将URL传递给setIcon方法,但它从未影响GUI。我也尝试过这个代码使用Icon而不是Image Icon而没有任何变化。任何建议都会非常有帮助。感谢。
static Random roll = new Random();
handCard1 = new javax.swing.JButton(); //this has been initialized through a series of methods that initialized the GUI
public static void main(String args[])
{
yourHand.setCard1(rollForCard.getCard()); //randomly set to fire, water or wind
if (yourHand.getCard1().equals("fire"))
handCard1.setIcon(SetIcon.setFireIcon()); //NPE here
//I also tried a simple handCard1.setIcon(fire);
//with this before the main ImageIcon fire = new ImageIcon("fire.jpg");
}//end main
...操作SetIcon
import javax.swing.ImageIcon;
public class SetIcon
{
public static ImageIcon setFireIcon()
{
ImageIcon fire = (new ImageIcon("fire.jpg"));
//I have also tried: ImageIcon fire = (new javax.swing.ImageIcon(getClass().getResource("fire.jpg")));
//and: ImageIcon fire = new ImageIcon(getClass().getResource("fire.jpg")));
return fire;
}
}
答案 0 :(得分:0)
好吧,你的handCard1可能是一个非静态变量,而你的图标设置过程是在静态方法中完成的。
通常我们将main方法用于实例对象,这是你应该做的,创建类的新实例并在构造函数中移动cod,你的NPE将消失或将handCard1声明为静态。
EDIT1:
此外,如果您的handCard1已经是静态的,NPE可能会因为您的setIcon方法中的路径错误而出现,如果您没有设置任何类路径,则该图标必须放在您的java.exe目录中。解决此问题的最佳方法是将该图像作为资源导入到eclipse / netbeans项目中,并将其作为资源路径进行访问。