Я некоторое время программировал на Java, но никогда особо ничего не делал с пакетами Swing.В настоящее время я разрабатываю графический интерфейс для программы вызова и ответа AI, несмотря на относительную сложность (по крайней мере, для меня) всего остального, что я делал, - эта проблема загрузки изображений, которая казалась чрезвычайно простой для реализации, ставит меня в тупик.
Следующие классы работают, если не в пакете, что меня действительно смущает.Я пробовал несколько разных предложений по реализации (одно из Head First Java, одно из учебников docs.oracle.com, а другое с использованием того, что предлагает http://leepoint.net/notes-java/GUI-lowlevel/graphics/45imageicon.html).
package CaRII;
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class P{
public static void main(String [] args){
P p = new P();
p.go();
}
public void go(){
JFrame frame = new JFrame("CaRRI: Call and Response Intelligent Improviser");
PBackground mainPanel = new PBackground();
frame.getContentPane().add(BorderLayout.CENTER, mainPanel);
frame.setSize(800,500);
frame.setVisible(true);
}
}
package CaRII;
import java.awt.*;
import javax.swing.*;
public class PBackground extends JPanel{
public Image backgroundImage;
public PBackground(){
backgroundImage = Toolkit.getDefaultToolkit().createImage("CaRIIBackGround.jpg");
}
public PBackground(LayoutManager layout){
backgroundImage = Toolkit.getDefaultToolkit().createImage("CaRIIBackGround.jpg");
}
public void paint(Graphics g){
g.drawImage(backgroundImage,0,0,null);
}
}
Как я уже сказал, странно то, что он не отображает изображение, если эти два класса находятся в пакете CaRRI;но если я скомпилирую и выполню их без объявления пакета, они будут работать нормально (например, изображение не загружается, пока размер окна не изменится ... но я видел решения в Интернете для этого, поэтому я смогу отсортировать его, как только загрузю его в пределахпакет).Я писал в XCode и JEdit, и изображение хранится в папке пакета внутри исходного кода (/src/CaRII/P.java ... /src/CaRII/CaRIIBackGround.jpg), я также пытался сохранить изображение впапка resources внутри / src / и использующая
ImageIcon(getClass().getResource("/resources/CaRIIBackGround.jpg)).getImage();
, но это вызывает другую ошибку при запуске
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:181)
at CaRII.PBackground.<init>(PBackground.java:19)
at CaRII.P.go(P.java:21)
at CaRII.P.main(P.java:15)
Любая помощь будет высоко ценится, так как, несмотря на ее простоту, это все меня озадачиваетутром и у меня есть много других классов, чтобы написать.
Спасибо (Вот изображение (я новый пользователь, поэтому я не могу публиковать изображения, но это ссылка на него)) http://imageshack.us/photo/my-images/189/cariibackground.jpg