Java: usar una imagen como un botón

Me gustaría usar una imagen como un botón en Java, e intenté hacer esto:

BufferedImage buttonIcon = ImageIO.read(new File("buttonIconPath")); button = new JButton(new ImageIcon(buttonIcon)); 

Pero esto todavía muestra el botón real detrás de la imagen, solo me gustaría que la imagen funcione como el botón, ¿cómo puedo hacer esto?

Quita el borde así:

 button.setBorder(BorderFactory.createEmptyBorder()); 

y luego también el contenido 1 :

 button.setContentAreaFilled(false); 

1 : Tomado de la solución agregada a la pregunta por @ 3sdmx

Una sugerencia sería establecer la imagen como una etiqueta y agregar un detector de mouse a la etiqueta para detectar clics.

Ejemplo:

 ImageIcon icon = ...; JLabel button = new JLabel(icon); button.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { ... handle the click ... } }); 

buttonIcon.setBorder (nuevo EmptyBorder (0,0,0,0));

 button.setBorderPainted( false ); 

Esto se puede hacer fácilmente en netbeans estableciendo la propiedad contentAreaFilled en False

  BufferedImage buttonIcon = ImageIO.read(new File("myImage.png")); button = new JButton(new ImageIcon(buttonIcon)); button.setBorderPainted(false); button.setFocusPainted(false); button.setContentAreaFilled(false); 

solo escribe esto

 button.setContentAreaFilled(false); 

Por lo que yo sé, no hay una manera fácil de hacerlo, tendrá que anular el método “paintComponent” de la clase JButton para no tener su imagen, si solo desea mostrar una imagen y comportarse como un botón, puede agregar un JPanel que dibuja la imagen ( clicky ) y agrega MouseListener / MouseAdapter para manejar el evento “mousePressed”

Seguí los pasos a continuación y pude crear un ‘ImageButton’ con éxito.

  1. Crea un JButton
  2. Se agregó un oyente de acción
  3. Establezca un ícono de imagen (tenga en cuenta que he colocado el icono de info.png en la carpeta src \ main \ resources y cargado utilizando el cargador de clases). La estructura del proyecto es como aquí. Estructura de la carpeta del proyecto
  4. Establecer un Border vacío
  5. Desactivado el relleno del área de contenido
  6. Desactivado la capacidad de enfoque
  7. Agregado al contenidoPanel

PFB el código que funcionó para mí

 JButton btnNewButton = new JButton(""); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Info clicked"); } }); String iconfilePath = this.getClass().getClassLoader().getResource("info.png").getFile(); btnNewButton.setIcon(new ImageIcon(iconfilePath)); btnNewButton.setBounds(10, 438, 39, 31); btnNewButton.setBorder(BorderFactory.createEmptyBorder()); btnNewButton.setContentAreaFilled(false); btnNewButton.setFocusable(false); contentPane.add(btnNewButton); 

El botón de salida resultante del código anterior es el siguiente

enter image description here