Это мой первый вопрос, поэтому, пожалуйста, потерпите меня.
Я работаю над приложением (которое я уже полностью разработал). Сейчас я нахожусь на этапе кодирования, и у меня возникают проблемы с размещением фонового изображения на JFrame, хотя я все еще позволяю ему играть роль Контейнера, поэтому я могу надевать на него кнопки и тому подобные вещи.
Я создал этот файл класса JFrame в Netbeans 7.0, и если бы кто-нибудь мог сказать мне, как сделать это через интерфейс Netbeans, это было бы здорово (если нет, просто код был бы в порядке).
Я уже знаю, что должен переопределить метод paintComponent (что я уже сделал, но мой файл изображения не отображается). Кроме того, у меня есть второй вопрос, я не хочу указывать полный путь к файлу изображения, у меня есть исходные файлы в пакетах, и теперь я совершенно не понимаю, куда мне поместить файлы изображений.
EDIT: initComponoents () - это метод, сгенерированный Netbeans, который определяет свойства JFrame.
public class TinyTowerOrganizerInterface extends javax.swing.JFrame {
/** Creates new form TinyTowerOrganizerInterface */
Image backgroundImage = Toolkit.getDefaultToolkit().getImage("D:/Java/TinyTowerOrganizer/Images/Background.jpg");
public TinyTowerOrganizerInterface() throws IOException {
initComponents();
class BackgroundPanel extends javax.swing.JPanel{
private Image image;
public BackgroundPanel(Image image){
this.image = image;
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
}
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Tiny Tower Organizer");
setFont(new java.awt.Font("Pixelated", 0, 18)); // NOI18N
setMinimumSize(new java.awt.Dimension(900, 500));
setName("frame"); // NOI18N
setResizable(false);
setUndecorated(true);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 900, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 500, Short.MAX_VALUE)
);
pack();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
new TinyTowerOrganizerInterface().setVisible(true);
} catch (IOException ex) {
Logger.getLogger(TinyTowerOrganizerInterface.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
}