Ваша программа на самом деле не делает то, о чем вы думаете, потому что вы допустили некоторые фундаментальные ошибки с именами классов и методов:
class testImage extends JPanel {
static Image image;
public void testImage(String url)
{
image = Resources.getImage(url);
}
public void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, 40, 40, null);
}
}
Стандарт заключается в том, что имена классов всегда должны начинаться с верхнего-буквенная буква, а имена методов должны начинаться со строчной буквы во избежание путаницы.Поскольку вы перепутали их, вы не заметили, что testImage(url)
, который вы объявляете в этом классе, является void методом, не конструктором, даже если имя совпадает,Поэтому, когда вы вызываете JPanel panel = new testImage();
, вы не вызываете этот метод - вы просто вызываете пустой конструктор по умолчанию, который предоставляется каждому классу, если в коде не объявлено никаких конструкторов.Также обратите внимание, что вы не использовали переменную url
и что ваше поле image
не должно быть статическим.
Если честно, вы все делаете неправильно и должны начинать зановос нуля.Решение Costis выглядит хорошо.Вам определенно стоит попробовать ImageIcon
, потому что они избавляют вас от необходимости вручную получать URL ресурса и отображать его.