Это моя первая попытка использовать графический интерфейс, и я пытаюсь установить значок JButton. Независимо от того, как я это кодирую, я получаю NPE. Я отметил строку, где происходит NPE. Мне удалось передать URL-адрес методу setIcon, но это никогда не влияет на графический интерфейс. Я также пробовал этот код, используя значок вместо значка изображения, без изменений. Любой совет будет очень полезен. Спасибо.
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
УстановитьЗначок...
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;
}
}
hardCard1
равноnull
или 2- значокfire
не имеет значения. Я бы рекомендовал использоватьImageIO
, а неImageIcon
, так как вы получите лучшую обратную связь, если файл не может быть прочитан. Также помните, чтоImageIcon(String)
переводитString
в ссылку на файл. Если значок встроен, это не сработает. Кроме того, изучив код, я не понимаю, как ваша программа может компилироваться. Вы обращаетесь кhandCard1
из контекстаstatic
, аhandCard1
не являетсяstatic
... - person MadProgrammer   schedule 07.08.2013private static JButton handCard1 = new javax.swing.JButton();
? - person MadProgrammer   schedule 07.08.2013