Я создал простой GUI с NetBeans. С помощью GUI Builder я начал создавать JFrame, затем Jpanel, а затем все другие компоненты, такие как кнопки. Для создания JPanel я использовал «bean» с именем DrawingPanel, который является классом, расширяющим JPanel, где я сделал переопределение paintComponent.
Когда я запускаю GUI, фоновое изображение не отображается, он появляется на границах компонентов, когда я нажимаю на них (например, маленький кусочек изображения появляется, когда я нажимаю на кнопку), но мне нужно, чтобы он появился полностью после создания GUI. Я действительно не знаю, где ошибка, может кто-нибудь, пожалуйста, помогите мне? Это очень важно.
Примечание: я должен использовать переопределение paintComponent, а не JLabel, чтобы показать изображение. Вот код:
public class DrawingPanel extends javax.swing.JPanel {
private Image background = null;
/**
* Creates new form DrawingPanel
*/
public DrawingPanel() {
initComponents();
try {
URL classURL = PokemonBattleSimulatorGUI.class.getResource("PokemonBattleSimulatorGUI.class");
URI classURI = classURL.toURI();
String path = new java.io.File(classURI).getParentFile().getParentFile().getParentFile().getParentFile().getAbsolutePath()
+ "\\src\\resources\\images\\background.jpg";
this.background = Toolkit.getDefaultToolkit().createImage(path);
} catch (URISyntaxException ex) {
System.out.println("Error");
}
}
@Override
protected void paintComponent(Graphics g) {
setOpaque(false);
g.drawImage(this.background, 0, 0, 400, 400, null);
super.paintComponent(g);
}
}
public class PokemonBattleSimulatorGUI extends javax.swing.JFrame {
public PokemonBattleSimulatorGUI() {
initComponents();
}
......
public static void main(String args[]) {
.....
.....
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new PokemonBattleSimulatorGUI().setVisible(true);
}
});
}