Estoy creando un JFrame con un panel en java que muestra una serie de JButtons, JLabels y JTextFields por pantalla al usuario. Estos tres elementos que acabo de mencionar me funcionan perfectamente y ahora estoy intentando añadir imágenes y quiero para ello usar la clase java.awt.Image
. He añadido la imagen en mi proyecto y la ruta.
Estoy ejecutando el código desde NetBeans. El problema es que NetBeans me obliga a inicializar la variable g
(que es la variable de tipo Graphics
que estoy usando) a un valor, así que le he asignado null
. Al ejecutar el código me salta una NullPointerException
así que creo que NetBeans no me está haciendo nada ya que mantiene el valor inicial de g
que es null
. Este es mi código:
package practica.pkgfinal.mtpa;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class Panel extends JFrame{
public void crearImagenes(Graphics g){
super.paintComponents(g);
try{
Image img = ImageIO.read(new File("piedra_papel_tijeras.jpg"));
g.drawImage(img, 20, 20, 90, 90, null);
}catch(IOException ioe){
ioe.toString();
}
}
public Panel(){
JPanel panel = new JPanel();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(500, 300);
setResizable(true);
panel.setLayout(null);
Font Arial = new Font("Arial", Font.PLAIN, 13);
Font ArialBold = new Font("Arial", Font.BOLD, 20);
Graphics g = null;
JButton aceptar = new JButton();
aceptar.setText("Aceptar");
aceptar.setBounds(100, 200, 128, 30);
panel.add(aceptar);
/*Aquí hay unos cuantos JButtons, JLabels y JTextFields más que me funcionan bien*/
/*...*/
crearImagenes(g);
this.add(panel);
}
}
¿Qué puedo hacer para evitar la NullPointerException
y que se muestre la imagen en mi JPanel?